Как перерисовать? - PullRequest
       41

Как перерисовать?

2 голосов
/ 01 июня 2011

Я пытаюсь перерисовать <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" тоже. Это в той же форме.

1 Ответ

2 голосов
/ 01 июня 2011

Вам также необходимо повторно обработать расширенные <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" />
...