класса javax.сталкиваться.ViewState отсутствует после рендеринга ajax


Это не дублирующий пост, я просто провел исследование, но не помог.

Во-первых, это моя страница... упрощенный для удобства чтения.

            <h:form id="treeForm">
                <f:event type="preRenderView" listener="#{taskTreeBean.update}" />              
                <rich:tree id="tree" nodeType="#{node.type}" var="node"
                    value="#{taskTreeBean.rootNodes}" toggleType="client"
                    selectionType="ajax"
                    render="@all"
                    selectionChangeListener="#{taskTreeBean.selectionChanged}">
                    <rich:treeNode>
                    ...
                    </rich:treeNode>
                </rich:tree>
            </h:form>
            <h:form id="taskListTableForm">
                <rich:dataTable id="taskListTable" styleClass="tasklist" keepSaved="true" value="#{taskListModel}" var="task"
                    rowClasses="odd-row, even-row" rows="3">
                    <rich:column>
                    ...
                    </rich:column>
                    <f:facet name="footer">
                        <rich:dataScroller id="scroller" for="taskListTable" />
                    </f:facet>
                </rich:dataTable>
            </h:form>

Когда я нажимаю на какой-то узел дерева, форма списка задач будет отображаться, но viewstate исчезнет, что делает dataScroller требует два клика на следующую/предыдущую страницу, так как первый клик возвращает значение ViewState.

Я проверил Джиру здесь - http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-790 .

Попытался оказать="@all" или оказываете="treeForm, taskListTableForm", оба потерпели неудачу. Я не могу дождаться, когда мохарра выпустит 2.2. Так есть ли здесь обходной путь?

Большое спасибо. Джира просто слишком трудна для понимания.

Отредактировано: Есть еще одна проблема, страница переходит от 1 до 2 в dataTable, если я нажму на узел дерева. Почему?

2 4

2 ответа:

Я знаю, что вы, вероятно, решили эту проблему, но для дальнейшего использования, это должно предоставить другим решение.

У меня была та же проблема, и я решил ее, заменив <f:ajax/> на <p:ajax/> из PrimeFaces 3.0. На рассматриваемой странице нет других компонентов PrimeFaces. Я не знаю, почему это работает, но надеюсь, что это будет в вашем случае.