-1

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のページ キャッシュのセクションを参照してください。

4

1 に答える 1

0

これは設定可能です: ModalWindow#showUnloadConfirmation(boolean) を使用して制御します。

于 2016-09-19T12:13:08.790 に答える