即使value为true,selectBooleanCheckbox在ajax之后也未经检查

时间:2013-10-10 12:13:32

标签: jsf checkbox primefaces

我在复合组件中使用SelectBooleanCheckbox,在页面上使用ui:repeat重复渲染。按下“保存”按钮后,页面会更新,但即使bean值为true,也会取消选中该复选框。

<p:selectBooleanCheckbox id="someId" value="#{cc.attrs.item.property}"/>
#{cc.attrs.item.property}

这就是页面上显示的内容:

This gets rendered!

当我初始导航到页面或在浏览器中重新加载页面后,一切都呈现正常。

我还尝试将提交更改为非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来修复它。

1 个答案:

答案 0 :(得分:0)

尝试使用c:forEach代替ui:repeat:)