我有一个带有一些组件的modalPanel(例如,一棵树)。在fisrt我的动作和actionListners工作正确。一段时间后(从5到10分钟),操作完全停止工作。该帖子被触发,但AjaxViewRoot操作为空。我没有验证错误。 所有页面组件ID都是固定的(未生成)以防止转换错误。 我的bean是Conversation作用域,它的超时时间超过30分钟。
<rich:modalPanel id="modalId" resizeable="false" autosized="true">
<a4j:include id="myPage" viewId="#{bean.viewId}"/>
</rich:modalPanel>
这是myPage(包含页面)代码:
<ui:composition>
<h:form id="frmPage">
<h:panelGrid columns="1">
<a4j:region id="treeRegion">
<rich:panel id="tbPanelTrees">
<h:panelGrid columns="2" >
<h:panelGroup layout="block" style="height:#{(height-150)/2}px; width:#{(width-20)/2}px; overflow:visible; overflow-y:auto; overflow-x:auto;">
<rich:tree id="subjectTree"
style=" height: 100%"
switchType="ajax"
var="item"
nodeFace="#{item.nodeType}"
value="#{bean.subjTree.rootSubjectsTree}"
adviseNodeOpened="#{bean.subjTree.adviseNodeOpened}"
changeExpandListener="#{bean.subjTree.changeExpandListener}"
nodeSelectListener="#{bean.subjTree.nodeSelectListener}"
ajaxSubmitSelection="true"
reRender="elements outside region"
ajaxSingle="true"
ignoreDupResponses="true">
<rich:treeNode type="root" icon="#{item.subjectsIcon}" iconLeaf="#{item.subjectsIcon}" id="subjectRootNode">
<a4j:commandLink value="#{item.nodeName}" id="subjectRootNodeLink"/>
</rich:treeNode>
<rich:treeNode type="user" icon="#{item.userIcon}" iconLeaf="#item.userIcon}" id="userNode">
<a4j:commandLink value="#{item.nodeName}" id="userNodeLink"/>
</rich:treeNode>
</rich:tree>
</h:panelGroup>
</a4j:region>
</h:panel:Grid>
</h:form>
</ui:composition>
有没有人有想法,有什么问题?
答案 0 :(得分:0)
终于找到了解决方案。我的一些组件没有定义的id并且生成了一个(如myForm:j1456546)。 页面的另一部分发送轮询请求(以显示一些新闻),该请求将DOM树发送到服务器以进行验证。生成的id在服务器端发生了变化,但在客户端保持不变(因为除了新闻面板之外,轮询没有重新报告)。因此,当用户单击按钮(或触发任何其他ajax-action)时,客户端和服务器端的按钮ID会在其中调用不同的操作。 解决方案:手动定义所有ID。