2

を再レンダリングしようとしています<t:selectManyCheckbox layout="spread">。ただし、再レンダリングは行いません。

Ajax 呼び出し:

    <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>展開されたアイテムも再レンダリングする必要があります。<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 に答える