2

我尝试重新渲染一个<t:selectManyCheckbox layout="spread">. 但是,它不会重新渲染。

阿贾克斯调用:

    <h:selectBooleanCheckbox value="#{handler.property}">
        <f:ajax listener="#{handler.toggleItems}" render="items" />
    </h:selectBooleanCheckbox>

t:selectManyCheckbox: _

<t:selectManyCheckbox id="items" layout="spread" forceId="true"
        forceIdIndex="false" value="#{handler.selectedItems}"
        required="true">
        ....
</t:selectManyCheckbox>

侦听器被调用并设置了新值<t:selectManyCheckbox>,但它不会重新渲染。

任何想法为什么?我也试过render="myForm:items"render=":myForm:items"。它是相同的形式。

4

1 回答 1

2

您还需要重新渲染展开的<t:checkbox>项目。我建议重新渲染 the<t:selectManyCheckbox> 所有<t:checkbox>项目的共同父级。如果不存在,请将它们放在<h:panelGroup>.

例如

<h:panelGroup id="allCheckboxes">
    <t:selectManyCheckbox id="items" layout="spread" ... />
    ...
    <t:checkbox for="items" index="0" />
    ...
    <t:checkbox for="items" index="1" />
    ...
</h:panelGroup>

<f:ajax render="allCheckboxes" />
于 2011-06-01T16:08:41.210 回答