ajax渲染后javax.faces.ViewState丢失

Tom*_*mmy 5 viewstate jsf richfaces jsf-2 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>
Run Code Online (Sandbox Code Playgroud)

当我单击某个树节点时,任务列表表单将呈现,但是viewstate将消失,这使得dataScroller要求两次单击“上一页/下一页”,因为第一次单击是返回ViewState值。

我在这里检查了JIRA- http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-790

尝试了render =“ @ all”或render =“ treeForm,taskListTableForm”,都失败了。我等不及mojarra发布2.2版。那么,这里有什么解决方法吗?

非常感谢。JIRA太难理解了。

编辑:还有一个问题,如果我单击树节点,页面在dataTable中从1转到2。为什么?

Mis*_*isa 5

我知道您可能已经解决了这个问题,但是为了将来参考,应该为其他人提供解决方案。