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

#jsf #jsf-2 #richfaces #viewstate #mojarra

#jsf #jsf-2 #richfaces #viewstate #mojarra

Вопрос:

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

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

             <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 исчезает, из-за чего для прокрутки данных требуется два клика на следующую / предыдущую страницу, поскольку первый щелчок возвращает значение ViewState.

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

Пробовал render=»@all» или render=»TreeForm, taskListTableForm», оба завершились неудачей. Я не могу дождаться, когда mojarra выпустит 2.2. Итак, есть ли здесь какое-либо обходное решение?

Большое спасибо. JIRA слишком сложен для понимания.

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

Ответ №1:

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

Комментарии:

1. Большое спасибо, большое спасибо, этот документ объяснил всю проблему, но я должен отобразить вторую форму при отправке первой формы, я пытался создать контейнер для обеих форм, и каждая из них отображалась на нем, но безуспешно, одна форма должна отображать другую, это правило исправления

2. Спасибо, я потратил на это целый день.

Ответ №2:

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