我有一个带有selectionchange事件的extendedDataTable和selectionMode =" single"。此外,我使用属性" onrowdblclick"它会调用JavaScript函数。
<rich:extendedDataTable id="myTable" ... selectionMode="single" var="item" selection="#{myController.selection}" onrowdblclick="showPageByDoubleClick('#{item.id}');">
<a4j:ajax event="selectionchange" listener="..."/>
我的问题是,如果用户双击一行,如何阻止extendedDataTable调用selectionchange事件?
双击我转发到新页面并且selectionchange事件花费太多时间,因此页面转发被延迟。我们有非常严格的性能要求。
我正在使用RichFaces 4.5.9
祝你好运
答案 0 :(得分:1)
好的,我所要做的就是使用队列并将两个请求分组到一个队列中。队列将两个请求视为同一请求,因此ignoreDupResponses属性正在运行。
示例:
<h:form id="myform">
<a4j:queue name="overviewSelectionQueue" ignoreDupResponses="true" requestDelay="200"/>
<a4j:jsFunction name="editWithDoubleClick" action="#{myController.editWithDoubleClick}">
<a4j:param name="selectedId" assignTo="#{myController.selectedId}" />
<a4j:attachQueue name="overviewSelectionQueue" requestGroupingId="overviewSelection"/>
</a4j:jsFunction>
<rich:extendedDataTable id="myTable" value="#{myController.myList}" var="item" selectionMode="single"
selection="#{myController.selection}" onrowdblclick="editWithDoubleClick('#{item.id}');">
<a4j:ajax event="selectionchange" listener="#{myController.overviewTableSelectionChanged}"
execute="@this" limitRender="true">
<a4j:attachQueue name="overviewSelectionQueue" requestGroupingId="overviewSelection"/>
</a4j:ajax>
...