问题描述
|
我们为所有被操纵的豆继承了基础豆。 basebean中定义了一些通用属性。
但是我们无法检索在Base bean中设置的值。可能是什么问题?
这是我的定义方式。
BaseBean {
String msg;
// getter and setter
}
TestManagedBean extends BaseBean {
public String doAction() {
setMsg(\"testMsg\");
return \"status\"
}
}
在jsp中:
<h:outputText value=\"#{testManagedBean.msg}\"/>
解决方法
它应该工作正常。显然,您在错误的实例中访问它,或者您期望更改会神奇地从另一个实例中反映出来。
将基础bean设为
abstract class
,并确保您未将其注册为<managed-bean>
,而只是将其注册为实现类本身(当您仍然这样做时,则JSF在尝试实例化abstract class
时将出错)。您还应该在视图侧仅引用EL的实现类。即不要使用#{baseBean.value}
,而应使用#{concreteBean.value}
,否则该值将在基本bean实例而不是在具体bean实例中设置。当您将“ 8”用作操作方法时,这种方式的值仍为“ 9”。
更新:根据您的更新,尽管代码未编译,但看起来不错。该问题是由其他原因引起的。可能是该bean处于请求范围内,并且您在导航案例中花了10英镑,这导致该bean被浪费并在新请求上重新创建?