確認ダイアログに問題があります。確認ボタンをクリックしても閉じません。これは、フォームがタブビューにある場合にのみ発生します。(フォームがタブビューではなく、パネルなどの場合のみ、一部のコードは正常に機能します。)
<h:form id="timingTableForm">
<p:dataTable var="item" value="#{requestBean.rmRequest.timingList}" id="timingDataTable" editable="true">
// some dataTable
</p:dataTable>
<p:confirmDialog closable="true" appendToBody="true" id="confirmDialog" message="#{msg.conf_deleteyesno}" header="#{msg.conf_header}" severity="alert" widgetVar="confirmation">
<p:commandButton id="confirm" value="#{msg.btn_yessure}" update="timingTableForm" oncomplete="confirmation.hide()" actionListener="#{requestBean.deleteTiming}" process="@this"/>
<p:commandButton id="decline" value="#{msg.btn_notyet}" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
</h:form>
「oncomplete」を「onclick」に変更しても問題なく動作しますが、サーバー側の操作が終了するまでダイアログが消えないようにしたいです。
確認ボタンを押すと、結果のHTML内で何か奇妙なことが起こります。
<div id="mainTabView:timingTableForm:confirmDialog" class="ui-confirm-dialog ui-dialog ui-widget ui-widget-content ui-overlay-hidden ui-corner-all ui-shadow" style="width: auto; height: auto;">
<div id="mainTabView:timingTableForm:confirmDialog" class="ui-confirm-dialog ui-dialog ui-widget ui-widget-content ui-corner-all ui-shadow ui-overlay-visible" style="width: auto; height: auto; left: 994.5px; top: 186px; visibility: visible; z-index: 1006;">
私のconfirm-dialogと同じIDを持つ新しいdivがレンダリングされます。結果は(予想どおり)1つの非表示の確認ダイアログですが、まだ表示されている新しいダイアログもあります。確認ボタンをもう一度押すと、2つの非表示の適合ダイアログと1つの表示ダイアログなどがあります...
私は何か間違ったことをしていますか?エラーを見つけられますか?または、これはprimefacesのバグである可能性がありますか?
- Primefaces 3.4.1
- GlassFish3.1.2で実行
- ブラウザFirefox16.0.2
よろしくお願いします、ファント
実際、私は自分の問題の解決策を見つけました:
この問題は、確認ダイアログも含まれているフォーム全体を更新しようとした場合にのみ発生します。このフォームの特定の領域のみを更新すると、正常に機能します。