0

我在复合组件中使用 SelectBooleanCheckbox,该组件在页面上使用 ui:repeat 重复呈现。按下 Save 按钮后,页面会更新,但即使 bean 值为 true,也不会选中该复选框。

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

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

这被渲染了!

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

我还尝试将提交更改为非 ajax 并使用 h:selectBooleanCheckbox 但这并没有太大变化。

==========================更多代码=================

页面.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 对字段没有任何作用。只需将其保存在数据库中。按下保存后,bean 和数据库中的值是正确的。只是没有在页面上呈现。

====================== 来自 MROD 的解决方案 ======================

我刚刚在 c:forEach 的视图中切换了 ui:repeat,一切都很好。:) 我只需要更改重复元素的 id,因为使用 forEach 每个元素都相同。我刚刚将 status.index 添加到 id 以解决该问题。

4

1 回答 1

0

尝试使用c:forEach而不是ui:repeat:)

于 2014-05-15T13:09:27.937 回答