RichFaces,extendedDataTable:双击时避免selectionChange事件

时间:2015-12-28 14:53:09

标签: jsf-2 richfaces

我有一个带有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

祝你好运

1 个答案:

答案 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>
...