我有一个selectOneMenu,它管理两个对象A和B之间的关系,其中A是固定的,B是可以通过菜单选择的。
在表单上,submit B被发送到bean进行进一步处理(创建和保存关系对象AToB)。
不工作!
<h:selectOneMenu value=#{b}>
<!-- b items from bean -->
</h:selectOneMenu>
<h:commandButton action="#{bean.addBToSelA(b)}"/>
<managed-bean>
<description>B Entity Request Bean</description>
<managed-bean-name>b</managed-bean-name>
<managed-bean-class>B</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>工作箱!
但是,如果selectOneMenu值是不同托管bean的嵌套属性,则它可以工作。(例如AToB)
<h:selectOneMenu value=#{aToB.b}>
<!-- b items from bean -->
</h:selectOneMenu>
<h:commandButton action="#{bean.addBToSelA(aToB.b)}"/>
<managed-bean>
<description>AToB Entity Request Bean</description>
<managed-bean-name>aToB</managed-bean-name>
<managed-bean-class>AToB</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>注意:如果我的"b“只是一个不同请求托管bean的属性,就足够了。
有人能这么好解释一下原因吗?
发布于 2012-02-18 03:22:59
因为JSF已经预先创建了bean实例。如果该实例已经存在于作用域中,它将不会被模型值覆盖。从<managed-bean>中删除faces-config.xml,它就能正常工作了。
与具体问题无关的,您似乎已经在使用JSF2.x了。为什么要坚持原有的JSF1.x风格的faces-config.xml配置?只需使用@ManagedBean注释(当然,只在实际的后台bean类上使用)。
https://stackoverflow.com/questions/9337777
复制相似问题