ajax 渲染后 javax.faces.ViewState 丢失
这不是重复的帖子,我只是做了研究,但没有帮助。
首先,这是我的页面......为了便于阅读而进行了简化。
<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>
当我单击某个树节点时,任务列表表单将呈现,但视图状态将消失,这使得 dataScroller 需要两次单击到下一个/上一个页面,因为第一次单击正在获取 ViewState 值。
我在这里检查了 JIRA - http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-790。
尝试了 render="@all" 或 render="treeForm, taskListTableForm",均失败。我迫不及待 mojarra 发布 2.2。那么这里有什么解决方法吗?
非常感谢。 JIRA 太难理解了。
已编辑:还有另一个问题,如果我单击树节点,页面将从数据表中的 1 转到 2。为什么?
This is not a duplicate post, i just done research but not helping.
First, this is my page... simplified for easy reading.
<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>
When i click some tree node, task list form will render, but the viewstate will disappear, which makes dataScroller requires two clicks to next/prev page since the first click is getting back the ViewState value.
I checked the JIRA here - http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-790.
Tried render="@all" or render="treeForm, taskListTableForm", both failed. I cannot wait mojarra to release 2.2. So is there any workaround here?
Thanks so much. The JIRA is just too difficult to understand.
Edited: There is another problem, the page go from 1 to 2 in the dataTable if i click the tree node. Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我知道您可能解决了这个问题,但为了将来的参考,
I am aware that you probably solved this problem, but for future reference, this should provide others with the solution.
我遇到了同样的问题,并通过将 PrimeFaces 3.0 中的
替换为
来解决这个问题。相关页面没有其他 PrimeFaces 组件。我不知道它为什么有效,但希望它适用于你的情况。I had the same problem and worked around it by replacing
<f:ajax/>
with<p:ajax/>
from PrimeFaces 3.0. The page in question has no other PrimeFaces components. I don't know why it works, but hopefully it will in your case.