Primefaces:更新数据表后,数据表内部的<p:ajax多次调用方法。



问题出在"p:ajax event="rowDblselect"listener="#{companyBean.update()}"…"上,当我第一次双击时,方法"update()"被调用一次(完美!),但之后当我按下命令按钮"button1"并再次双击组件时,"update()"会被调用两次。当我再重复一次时,"update()"会被调用3次。。。这太奇怪了!!我认为当我使用commandButton更新数据表时,ajax事件会为自己保留升级。我不知道(?)。。。有人能帮我解决吗??

<h:panelGrid id="panel" columns="5">
  <p:commandButton id="button1"  value="Search" actionListener="#{                     
     companyBean.search()}" update="dataTable"/>          
</h:panelGrid>

<p:dataTable id="dataTable" var="companyTO" value="#{companyBean.companiesTO}"                      
  selection="#companyBean.selectedCompanyTO}" rowKey="#{companyTO}"                   
  emptyMessage="" selectionMode="single" >   
 <p:ajax event="rowDblselect" listener="#{companyBean.update()}" immediate="true"   
        process="@this" />
 <p:column >
     ...
<p:dataTable>

obs.:当我删除"update="dataTable"时,"event="rowDblselect"工作得很好,只调用该方法一次。所以,问题出在更新上。

我在这里发现了同样的问题:https://stackoverflow.com/questions/11904556/updating-datatable-with-own-datamodel-calls-method-more-and-more

尝试删除ajax事件的immediate属性,并在commandbutton中添加属性:

process="@this" partialSubmit="true" ajax="true"

有点像这样:

事件:

   <p:ajax event="rowDblselect" listener="#{companyBean.update()}" process="@this" partialSubmit="true" />

按钮:

 <p:commandButton id="button1"  value="Search" actionListener="#{                     
         companyBean.search()}" update="dataTable" process="@this" partialSubmit="true" ajax="true"/> 

相关内容

  • 没有找到相关文章

最新更新