我正在尝试制作复合组件(在每个视图上多次使用),这允许我通过复选框值显示一些输入。一个输入取决于复选框值。我不想将它绑定到bean,因为此值不会保存到数据库中。我虽然将它保存在视野范围内。
我在face config holder中添加了绑定
<managed-bean>
<description>Holder of all component bindings.</description>
<managed-bean-name>components</managed-bean-name>
<managed-bean-class>java.util.HashMap</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
复合组件:
<p:selectBooleanCheckbox binding="#{components[cc.attrs.bindingId]}">
<p:ajax update="panel"/>
</p:selectBooleanCheckbox>
<h:panelGroup id="panel">
<p:inputText rendered="#{components[cc.attrs.bindingId].value}" value="#{cc.attrs.beanPropertyOnTrue}">
<p:inputText rendered="#{not components[cc.attrs.bindingId].value}" value="#{cc.attrs.beanPropertyOnFalse}">
</h:panelGroup>
它工作正常,我可以在一个视图上使用此组件,但问题是当我使用commandButton将表单发送到服务器时,复选框正在更改为未选中....
<p:commandButton value="show decision dialog"
actionListener="#{testBean.action}"
update="@form"
oncomplete="if (args && !args.validationFailed){ dialog.show() }"/>