2011-05-26 68 views
2

我们正在为我们所有的mangagedbeans调用一个基本bean。 basebean具有一些定义在其中的共同属性。 但我们无法检索基本bean中设置的值。什么可能是这个问题?JSF 1.2托管bean继承不起作用

这是我如何定义的。

BaseBean { 
    String msg; 
    // getter and setter 
} 

TestManagedBean extends BaseBean {   
    public String doAction() { 
     setMsg("testMsg");  
     return "status" 
    } 
} 
在jsp

<h:outputText value="#{testManagedBean.msg}"/> 

回答

4

这应该只是罚款。显然你是在错误的实例中访问它,或者你期望在其他实例中神奇地反映这些变化。

制造基地豆的abstract class,并确保你没有把它注册为一个<managed-bean>,而只是实现类本身(如果你还可以这样做,那么JSF将尝试实例化abstract class时错误)。您还应该在视图方面仅引用EL的实施课程。即请勿使用#{baseBean.value},而只使用#{concreteBean.value},否则该值将在基本bean实例中设置,而不是在具体bean实例中设置。当您将#{concreteBean.submit}作为操作方法时,该值仍然是null


更新:根据您的更新,虽然代码不能编译,它看起来不错。问题是由别的东西引起的。也许这个bean是请求作用域的,并且在导航案例中你有一个<redirect/>,导致这个bean被垃圾处理并在新的请求中重新创建?