2011-02-10 14 views
1

JSRアプリケーションでは、userRoleなどのセッション属性にaがある場合、ページAからページBにユーザーをリダイレクトする必要があります「投稿者」の場合は「値」、ページが「著者」の場合などはページCに関連付けられます。JSF:特定のFacesContextセッション属性の値に基づいてユーザーを別のページにリダイレクトする方法

おそらく、ページリスナーまたはセッションリスナーを実装する必要があると言われます。リスナー・クラスの作成は非常に簡単で標準的ですが、私はJSFページ自体(セッションを聴くために)でそれを設定する方法はわかりません。

誰か?

答えて

1

セッションリスナー(HttpSessionListener)は、要求/応答の宛先を変更するために必須の、現在のHTTP要求/応答への参照を持たないため、不適切です。

フィルタを使用します。フィルタの詳細については、tag info pageをご確認ください。セッションスコープのJSFマネージドBean自体は、管理対象Bean名をキーとしてHttpSession属性として格納されています。

Bean bean = (Bean) ((HttpServletRequest) request).getSession().getAttribute("bean"); 

それともPOSTアクションに基づいて決定されていたときに、ちょうどマネージドBeanのアクションメソッドで異なる結果を返すことを次のようにあなたはdoFilter()方法でそれらにアクセスすることができます。次に、(暗黙の)JSFナビゲーションを使用します。擬似:

public String submit() { 
    if (user is contributor) return "pageB"; 
    if (user is author) return "pageC"; 
    return "pageA"; 
} 
+0

アドバイスありがとうございました。あなたのアドバイスは、セッションタイムアウトの「聞き取り」にも有効ですか? – Skyhan

+0

ようこそ。唯一の要件に応じて、 'HttpSessionListener'または' HttpSessionBindingListener'を使用します。 – BalusC

関連する問題