私は現在、Java EE 6/JSF 2 webappにいくつかの認可品の共通ロジックを置くために頭を悩ましています: 私には、特定のCookieを別のページにリダイレクトする必要があります。JSF2にロジックのようなフィルタを置く場所
私は3つのソリューションとみなさ:
1)は、これが働いていたサーブレット3.0フィルタ(@WebFilter) を使用し、私もそこに私の管理対象Beanを注入できますが、管理対象Beanは、顔externalContextへのアクセスを必要としますこれは、フィルタの起動時にまだ設定されていないので、私はNPEの位相リスナーがCDIのコンポーネントとすることはできませんので、注入することはできませんので、これは、ぎこちない感じフェーズリスナー を使用)
2管理対象Beanを呼び出してしまいました他のコンポーネント(EL評価を除く)。私のためのphaseListenerは、ナビゲーションロジックを組み込むために技術的に感じています。
3)シーム2.0で、私は「ページアクション」は、このようなもののためにを使用できますが、この概念が、これはのように見えた縫い目にJSF 2.0
にそれをしなかったようだ:
<page view-id="/admin/*.jsf">
<action execute="#{authenticator.checkAccess()}" />
</page>
JSF 2.0にページをレンダリングする前に「コントローラロジック」を実行するという概念がないのは本当ですか?
こんにちは、その特色については知りませんでした。だから、すべてのjsfページがインターセプトされていることを確認したいのであれば、すべてのjsfページにそのコードが含まれていることを確認することが唯一の方法です(ページ構成など)。 – fujan
いいえ、それは確かに唯一の方法ではありません。もし私があなただったら、フィルタオプションでさらに調査します。これは多くのJSFアプリケーションの標準要件であるため、あなたの質問には洗練されたソリューションが必要です。 –