2012-04-27 13 views
0

ウェブサイトで言われたように、私のbeanは私が.xhtmlに電話している場合にのみ実行されます。EL式なしでBeanメソッドを提供する方法

EL式なしでBeanを呼び出すことはできますか?

私のHomeControllerがセッションステータスをチェックし、私のhome.xhtmlにあるメソッドを呼び出していて、今度はこのBeanを落とす必要がないので、これが必要です。

+0

あなたはそれを呼び出すことができます他のBeanやフェーズリスナーから、または他の場所から取得できます。あなたの質問を明確にすることができますか? –

+0

私はそれを編集しました。詳細情報が必要かどうかを確認してください。 – Gerep

答えて

2

解決策を別の方向に探す必要があります。

コンテナ管理の認証を使用する代わりにユーザー認証を行う場合は、通常、ユーザーがログインしているかどうかを確認する特定の目的でservlet filterを使用します。

サーブレットフィルタは、サーブレット(FacesServletなど)が特定のURLパターンにマップされているようにすることができます。そのURLパターンに一致するすべての要求に対して呼び出されます。フィルタ内のリクエスト/セッションデータを探索し、フィルタチェーンを継続するか、リダイレクトを送信することによって、リクエスト/レスポンスを適切に処理できます。

これに応じてjavax.servlet.Filterインターフェイスを実装する必要があります。以下は、@SessionScopedマネージドBean LoginControllerがあると仮定して、doFilter()メソッドを実装する方法の例です。 JSFはセッションスコープのマネージドBeanを属性HttpSessionとして保存します。

@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    HttpSession session = request.getSession(false); 
    LoginController loginController = (LoginController) (session != null) ? session.getAttribute("loginController") : null; 

    if (loginController == null || !loginController.isLoggedIn()) { 
     response.sendRedirect(request.getContextPath() + "/login.xhtml"); // No logged-in user found, so redirect to login page. 
    } else { 
     chain.doFilter(req, res); // Logged-in user found, so just continue request. 
    } 
} 

このフィルタは、制限されたページをカバーするURLパターンにマップします。 /app/*

@WebFilter("/app/*") 
public class LoginFilter implements Filter { 
    // ... 
} 

更新login.xhtmlも、このURLパターンで覆われていると、あなたは本当に、次のようにifブロックを変更、その後、それを変更することができない場合:

if (!request.getRequestURI().endsWith("/login.xhtml") && (loginController == null || !loginController.isLoggedIn())) { 
    // ... 
} 
+0

このクラスを作成する5つのフィルタクラスのリストがありますが、これは正しいですか? – Gerep

+0

'javax.servlet.Filter'。答えの中のリンクも見てください。 – BalusC

+0

ええ。私はそれを持っている、まだ疑いがある... @WebFilter、それは何ですか? – Gerep

関連する問題