2012-12-22 33 views
15

実行順序はどうなりますか?ここで jsf f:eventsの実行順序

が可能 f:eventイベント名についての質問です: List of JSF 2 events?

preRenderComponent 
preRenderView 
postAddToView 
preValidate 
postValidate 
私は、ユーザーがセッションBeanに保存されている場合はログインしていない場合はする必要がありますログインサイトにリダイレクトされてチェックしたい

使用されたコンバータはログインしているユーザに依存するため、ビュー・パラメ変換フェーズの前に発生します。 'preValidate'は変換後に発生するようですので、以前のイベントが必要です。

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

私はあまりにも「beanB」の「checkLoggedInを()」置くが、私は簡単にそれを再利用することができるようにだけチェックのためにBeanをスコープ別の要求を使用しようとした可能性があります。

答えて

26

これらの実行順序は何ですか。 (通常時のビューの位相を復元されただけでなく、中である応答フェーズ、例えばナビゲーションをレンダリングすることができる)成分は、ビューの構築時にビューに追加された直後

  • postAddToViewラン。
  • preValidateは、コンポーネントが検証される直前に実行されます(通常は検証フェーズ中ですが、immediate="true"の場合は要求値フェーズを適用することもできます)。
  • postValidateは、コンポーネントが検証された直後に実行されます(通常は検証フェーズ中ですが、immediate="true"の場合は要求値フェーズを適用することもできます)。
  • preRenderViewは、レンダリング応答フェーズ中にビューがレンダリングされる直前に実行されます。
  • preRenderComponentは、レンダリング応答フェーズ中にコンポーネントがレンダリングされる直前に実行されます。

詳細については、javadocの紹介を参照してください。


私は、ユーザーがセッションBeanに保存されている場合は、ログインしているチェックしたい

使用コンバータが依存しているため、ビューのparam変換フェーズの前に発生する必要がありますログインサイトにリダイレクトされていない場合ログインしたユーザーの'preValidate'は変換後に発生するようですので、以前のイベントが必要です。

JSFイベントではなく、servlet filterを使用する必要があります。 `preValidate` /` postValidate`が ``即時= "真" の場合、コンポーネント上で、すべての呼び出されません

+1

:私は前にいくつかの例を掲載しました。 Mojarraのソースコードを見ると、それが確認されます。それはそんなことになっていますか? –