JSF は、セッション スコープのマネージド Bean を の属性として格納します。HttpSession
これは、Filter
byでのみ使用できますHttpServletRequest#getSession()
。
HttpSession session = ((HttpServletRequest) request).getSession();
SessionBean sessionBean = session.getAttribute("sessionBean");
// ...
更新:コメントによると、実際にCDIを使用しているようです:
私のフィルターは JSF よりも前にトリガーされます。getAttribute を使用すると、常に null 値が返されます。セキュリティを実装するためにインターセプターを使用する必要があるため、Bean で 'Named' および 'SessionScoped' アノテーションを使用して CDI を使用しています。
あなたがJSF独自のものを使用していたことを理解し@ManagedBean
ました。最初の回答はそれにのみ適用されます。Bean がすでに CDI によって管理されている場合は、@Named
CDI 独自@Inject
の通常の方法でFilter
.
@Inject
private SessionBean sessionBean;
JSF の場合は、チェック@ManagedBean
を追加するだけです。if (sessionBean != null)
フィルターが JSF サーブレットの前に呼び出されるかどうかは関係ありません。セッション Bean が JSF によって作成されるnull
と、フィルターには含まれません。