【PrimeFaces】YesNoダイアログが開かない。(すぐ閉じる)

コマンドボタンをクリックして、YesNoダイアログを出したいが、押すとすぐに画面が閉じてかつYesの処理が実行されてしまう。

原因は二つ

  1. コマンドボタンの「ajax=”false” 」
    これは、ajax=trueもしくは未設定でOK。ファイルダウンロードを呼び出したいときにajax=falseでないといけない事象があってそれを流用したのが失敗。
  2. Yesボタンの「 onclick=”#{salesSummaryController.deleteRow()}”」
    これはactionListenerに設定しなければいけない模様。

<p:commandButton id=”deleteButton” icon=”ui-icon-trash” value=”選択行を削除”
onclick=”PF(‘dlgYesNo’).show();”
ajax=”false”
disabled=”#{empty salesSummaryController.selectedItem}”/>
<p:dialog widgetVar=”dlgYesNo”>
<p:outputLabel value=”選択行を削除します。よろしいですか?”/>
<br/>
<p:commandButton id=”cmdyes” value=”はい”
onclick=”#{salesSummaryController.deleteRow()}”
oncomplete=”PF(‘dlgYesNo’).hide()” styleClass=”ui-confirmdialog-yes” update=”:messages,:SalesSummaryListForm” />
<p:commandButton id=”cmdno” value=”いいえ” oncomplete=”PF(‘dlgYesNo’).hide()” update=”:SalesSummaryListForm” styleClass=”ui-confirmdialog-no” />
</p:dialog>

 

<p:commandButton id=”deleteButton” icon=”ui-icon-trash” value=”選択行を削除”
onclick=”PF(‘dlgYesNo’).show();”
disabled=”#{empty salesSummaryController.selectedItem}”/>
<p:dialog widgetVar=”dlgYesNo”>
<p:outputLabel value=”選択行を削除します。よろしいですか?”/>
<br/>
<p:commandButton id=”cmdyes” value=”はい”
actionListener=”#{salesSummaryController.deleteRow()}”
oncomplete=”PF(‘dlgYesNo’).hide()” styleClass=”ui-confirmdialog-yes” update=”:messages,:SalesSummaryListForm” />
<p:commandButton id=”cmdno” value=”いいえ” oncomplete=”PF(‘dlgYesNo’).hide()” update=”:SalesSummaryListForm” styleClass=”ui-confirmdialog-no” />
</p:dialog>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)