Почему подзаголовок ломает a4j: reLender commandLink? - PullRequest
1 голос
/ 22 апреля 2010

Вот минимальный пример rich: dataTable с a4j: commandLink внутри.При щелчке он отправляет запрос AJAX моему бину и повторно отображает таблицу данных.

<rich:dataTable id="dataTable" value="#{carManager.all}" var="item">
    <rich:column>
        <f:facet name="header">name</f:facet>
        <h:outputText value="#{item.name}" />
    </rich:column>
    <rich:column>
        <f:facet name="header">action</f:facet>
        <a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}">
                <f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" />
                <f:param name="from" value="list" />
        </a4j:commandLink>
    </rich:column>
</rich:dataTable>

Пример выше до сих пор работает отлично .Но когда я добавляю в таблицу rich: subTable (например, группируем автомобили по гаражам), повторное рендеринг завершается неудачно ...

<rich:dataTable id="dataTable" value="#{garageManager.all}" var="garage">
    <f:facet name="header">
        <rich:columnGroup>
            <rich:column>name</rich:column>
            <rich:column>action</rich:column>
        </rich:columnGroup>
    </f:facet>

    <rich:column colspan="2">
        <h:outputText value="#{garage.name}" />
    </rich:column>

    <rich:subTable value="#{garage.cars}" var="car">
        <rich:column><h:ouputText value="#{car.name}" /></rich:column>
        <rich:column>
            <a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}">
                    <f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" />
                    <f:param name="from" value="list" />
            </a4j:commandLink>
        </rich:column>
    </rich:column>
</rich:dataTable>

Теперь rich: dataTable не перерисовывается , ноэлемент удаляется, так как элемент не отображается после обновления страницы вручную.

Почему subTable break поддерживает здесь повторную визуализацию?

Tanks Tom

1 Ответ

1 голос
/ 29 апреля 2010

Оказалось, что Hibernate не обновил список связанных моделей.

После удаления Автомобиля с помощью appMuse's carManager удаленный автомобиль все еще показывался в списке getCars () связанного гаража [при получении Гаражов с помощью garageManager.getAll ()]. ​​

Так что проблема не была связана с самими richfaces!

В настоящее время я использую обходной путь (удаление элементов вручную при получении данных от связанной модели oO), но, возможно, я открою новый вопрос для решения этой проблемы.

...