0

私たちのアプリケーションは wicket 1.5.2 を使用しており、これまで ajax を使用してかなりの数のページを作成してきたため、ページはステートフルになっています。ログで NotSerializableException [NSE] に気付きましたが、実際には機能を壊していないため無視しました。現在、複数のタブ/ウィンドウのシナリオで ajax の問題に気付き始めています。

いくつかの ajax ビヘイビアーとページ B を含むページ A があるとします。ページ A をロードし、リンクを右クリックして、新しいタブでページ B を開きました。ページ A の ajax リンクをクリックすると、同じページ [A] を再描画しようとします。デバッグしようとすると、ページ ID に基づいてページをルックアップしようとしていることに気付きました。同じものがページ ストアに存在しないため [ページが保存されていないために NSE があったことを思い出してください]、新しいインスタンスを作成します。ページと同じものを再描画します。

シリアライゼーションを成功させることが正しいことだとわかっていますが、実装されたすべてのコンポーネントを再検討してこれらの問題を確実に修正する必要があるため、これには時間がかかります。これに対する他の迅速で(やや)良い解決策はありますか?

もう 1 つのオプションは、ステートレス ajax コンポーネントを使用してページをステートレスにすることです [Jolira?] - どのように公正になるかはわかりませんが、試してみます。その間、誰かがこの問題を回避した場合は、お知らせください。

4

1 に答える 1

0

耳障りに聞こえるかもしれませんが、コードを修正する必要があります。一般に、例外を無視することはお勧めできません。

Wicket は、ステートフル性をサポートするためにページが完全にシリアライズ可能であることに依存しています。ページのシリアル化が失敗した場合、状態に関する Wicket の機能が動作する保証はありません。これは、AJAX 経由で更新したいページの部分 (つまり、コンポーネントとモデル) に特に当てはまります。

于 2012-09-30T08:53:18.780 に答える