3

問題は "p:ajax event="rowDblselect" listener="#{companyBean.update()}" ... " で、初めてダブルクリックすると、メソッド "update()" が 1 回呼び出されます (パーフェクト!)、しかし、その後、コマンドボタン「button1」を押して、コンポーネントを再度ダブルクリックすると、「update()」が2回呼び出されます。もう一度繰り返すと、「update()」が 3 回呼び出されます ... ... ... ... これは非常に奇妙です !! コマンドボタンでデータテーブルを更新すると、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"」が完全に機能し、メソッドを 1 回だけ呼び出します。したがって、問題は更新にあります。

ここで同じ問題を見つけました: 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