我在复合组件中使用SelectBooleanCheckbox,在页面上使用ui:repeat重复渲染。按下“保存”按钮后,页面会更新,但即使bean值为true,也会取消选中该复选框。
<p:selectBooleanCheckbox id="someId" value="#{cc.attrs.item.property}"/>
#{cc.attrs.item.property}
这就是页面上显示的内容:
当我初始导航到页面或在浏览器中重新加载页面后,一切都呈现正常。
我还尝试将提交更改为非ajax并使用h:selectBooleanCheckbox,但这并未发生太大变化。
==========================更多代码=================
page.xhtml
...
<ui:repeat id="listID" value="#{itemList}" var="listElement">
<cc:componentWithCheckbox id="theComponent" item="#{listElement}"/>
</ui:repeat>
...
componentWithCheckbox.xhtml
<cc:interface>
<cc:attribute name="item" required="true" />
</cc:interface>
<cc:implementation>
<div id="#{cc.clientId}">
<p:inputText value="#{cc.attrs.item.someTextProperty}"/>
<p:selectBooleanCheckbox id="someId" value="#{cc.attrs.item.property}"/>
#{cc.attrs.item.property}
</div>
</cc:implementation>
豆
Bean对该领域没有任何作用。只需将其保存在数据库中即可。按下save后,bean和DB中的值是正确的。只是没有在页面上呈现。
====================== MROD解决方案===================== < / p>
我刚刚切换了ui:在视图中重复c:forEach,一切都很好。 :)我只需要改变重复元素的id,因为forEach每个元素都相同。我刚刚将status.index添加到id来修复它。
答案 0 :(得分:0)
尝试使用c:forEach
代替ui:repeat
:)