21

それらの実行順序は何ですか?

f:event考えられるイベント名についての質問は次のとおりです: List of JSF 2 events?

preRenderComponent
preRenderView
postAddToView
preValidate
postValidate

ユーザーがセッション Bean に保存されているかどうかを確認したいのですが、ログイン サイトにリダイレクトされていない場合は、使用されるコンバーターがログインしているユーザーに依存するため、view-param 変換フェーズの前に発生する必要があります。「preValidate」は変換後に行われるようですので、もっと早いイベントが必要です。

<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/>
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/>

「beanB」に「checkLoggedIn()」を入れることもできましたが、簡単に再利用できるように、チェック用に別のリクエスト スコープ Bean を使用しようとしました。

4

1 に答える 1

36

それらの実行順序は何ですか?

  • postAddToViewビューのビルド時にコンポーネントがビューに追加された直後に実行されます (これは通常、ビューの復元段階ですが、ナビゲーションなどの応答のレンダリング段階でも可能です)。
  • preValidateコンポーネントが検証される直前に実行されます (通常は検証段階ですが、場合によっては要求値を適用する段階でもありますimmediate="true")。
  • postValidateコンポーネントが検証された直後に実行されます (通常は検証段階ですが、場合によっては要求値を適用する段階でもありますimmediate="true")。
  • preRenderViewレンダリング レスポンス フェーズでビューがレンダリングされる直前に実行されます。
  • preRenderComponentレンダリング レスポンス フェーズ中にコンポーネントがレンダリングされる直前に実行されます。

リンクをクリックすると、javadoc の紹介で詳細な説明が表示されます。


ユーザーがセッション Bean に保存されているかどうかを確認し、ログイン サイトにリダイレクトしない場合は、使用されるコンバーターがログインしているユーザーに依存するため、view-param 変換フェーズの前に発生する必要があります。「preValidate」は変換後に行われるようですので、もっと早いイベントが必要です。

これには、JSF イベントではなく、単純なサーブレット フィルタを使用する必要があります。以前にいくつかの例を投稿しました:

于 2012-12-22T15:57:10.553 に答える