問題タブ [confirm-dialog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wicket - ウィケット モーダル ウィンドウを閉じるとエラーが発生する
ModalWindowを閉じる際に、"Do you want to leave or stay..." というメッセージが表示されることがあります。理由を特定できません。たとえば、ウィンドウ 10x を (同じ方法で) 閉じると、これらの試みのいくつかがこの失敗に終わります。それは問題ありませんが、親ページが再構築され、すべてのデータが失われ、ユーザー フレンドリーではありません。
私のプロジェクト仕様:
- 改札: 6.21.0
- ジャワ:8
- 春: 4.1.1.RELEASE
- およびその他(関連する依存関係がないことを願っています)
これまでに行ったこと、試したこと、または調査したこと:
- モーダルウィンドウを閉じてエラーが発生すると、親ページが再構築されます
- エラーが発生した場合、クローズ コールバックは呼び出されません
- modalWindow.showUnloadConfirmation(false) - 機能しません。ウィンドウが表示されないことを確認しますが、ウィンドウを閉じると親ページがリロードされ、データがなくなります
- ウィケットを最新の 6.24 バージョンまたは Spring 4.1.6 に更新しても役に立たない
- ウィケット 6.1.9 にダウングレードしても役に立たなかった
- wicket 7.4 へのアップグレードは役に立たなかった
- エラーが発生しない場合、ModalWindow Page は、たとえば http 8443 exec 5 スレッドによって生成され、コールバックは同じスレッドによってキャッチされます。
- エラーが発生した場合、ModalWindow Page は、たとえば http 8443 exec 5スレッドによって生成されますが、失敗した場合、たとえばhttp 8443 exec 9スレッドによって新しい親ページが作成されます。
- また、閉じるボタンを追加するのにも役立ちませんでした。 window.close() を呼び出す前に、すべてのデータプロバイダーをクリアしてデタッチします
- モーダル ウィンドウが失敗すると、javascript の window.close() メソッドが最後に呼び出されます。その後のコードは呼び出されません。その後、おそらく親ページにリダイレクトされます(このため、このページを離れますか確認ダイアログが表示されます)。
- 上記のすべては、ModalWindow を拡張し、保護されたメソッド String getCloseJavacript() をオーバーライドする新しい Java クラスを作成することによってテストできます。
解決
問題は、親ページがデータをロードしたときに、ページ サイズが大きすぎて Wicket ページ キャッシュ メモリに格納できないことでした。そのため、モーダル ウィンドウを閉じると、保存された親ページが読み込まれるはずでしたが、保存されなかったため、new が生成されました。Wicket ページのキャッシュ メモリのサイズは、WicketApplication クラスで設定できます。詳細については、https://ci.apache.org/projects/wicket/guide/6.x/guide/versioningCaching.htmlのページ キャッシュのセクションを参照してください。
primefaces - 検証が成功した場合にのみ p:confirm ダイアログを表示する
したがって、基本的には確認ダイアログのポップアウトの前に検証を追加したいだけですが、<p:confirm>
コマンドボタンの間に追加すると、確認ダイアログの前に検証エラーがポップアウトしませんでしたif (!args.validationFailed) PF('dlg1').show();
。
だから私はそれを削除し、このコードで変更しました。問題は検証が機能することですが、確認ダイアログが非常に速くポップアップし、はい-ボタンが表示されませんでした。
どんな助けでも素晴らしいでしょう:)