3

问题在于“p:ajax event="rowDblselect" listener="#{companyBean.update()}" ...”,当我第一次双击时,方法“update()”被调用一次(完美!),但之后当我按下命令按钮“button1”并再次双击组件时,“update()”被调用了 2 次。当我再重复一次时,“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


是或否,取决于你所说的聪明和/或容易。但是(见下文)我猜你会说“不”。

405 Method Not Allowed是一个 HTTP 状态代码,默认情况下 PHP 根本不会返回这些(例如,如果您通过 apache 发送默认的 200 标头)。

标准 PHP 中没有“控制器”,因此您无需期待任何回报。您可以使用或构建一个框架,如果缺少参数,它可能会返回一些东西。

如果您要自己实现它,则返回一个像这样的标题。

header('HTTP/1.1 405 Method Not Allowed');
4

1 回答 1

1

尝试删除事件的immediate属性并添加属性:ajaxcommandbutton

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"/> 
于 2013-12-27T16:14:16.700 回答