2

JSF2.1とprimefaces3.4を使用しています。

私のすべてのxhtmlビューは、ヘッダー、左側のナビゲーションパネル、フッター、およびコンテンツを含むレイアウトで構成されています。管理対象Beanはビュースコープ内にあります。

ほとんどのビューでは、preRenderViewタイプのf:eventリスナーを使用して、特定属性とサービスを初期化します。リスナーには、ポストバックリクエストをチェックするための条件文があります。リクエストがポストバックでない場合にのみ、 preRenderViewリスナー内の完全なコードを実行します。

左側のナビゲーションパネルリンクを介して他のページ(たとえば、ページAからページB )に移動しても、ビュースコープは破棄されず、再びページAに戻ると、ポストバック要求のチェックはtrueを返します。なぜそれが起こっているのかわからない。

誰かが私を助けることができれば感謝しますか?

前もって感謝します。

4

1 に答える 1

1

POSTではなくGETでナビゲートする必要があります。

つまり、プレーンなページ間ナビゲーションの代わりに、<h:link>またはを使用します。このようにして、が返されます。<h:button><h:commandLink><h:commandButton>isPostback()false

さらに、ビュースコープのBeanが破棄されていないことをどのように観察したかが明確ではありません。Beanのコンストラクターにデバッグブレークポイントを設定して、新しいページが要求されたときに呼び出されるかどうかを確認しましたか?それが実際にまったく同じインスタンスである場合、それは、物理的に異なるビューに実際に移動するのではなく、実際に条件付きで新しいページを含める場合にのみ発生する可能性があります。

于 2013-03-16T01:44:02.617 に答える