2011-02-10 5 views
1

JSR 애플리케이션에서 userRole과 같은 세션 속성에 페이지가 있으면 페이지 A에서 페이지 B로 리디렉션해야합니다. "contributor"의 값, 예를 들어 "author"인 경우 페이지 C에 적용됩니다.JSF : 특정 FacesContext 세션 속성의 값에 따라 사용자를 다른 페이지로 리디렉션하는 방법

아마도 페이지 수신기 또는 세션 수신기를 구현해야한다고 들었습니다. 리스너 클래스 작성은 이해하기 쉽지만 JSF 페이지 자체에서 (세션을 듣기 위해) 설정하는 방법을 알지 못합니다.

아무도 없습니까?

답변

1

세션 수신기 (HttpSessionListener)는 요청/응답 대상을 변경하기 위해 필수적인 현재 HTTP 요청/응답에 대한 참조가 없기 때문에 적합하지 않습니다.

필터를 사용하십시오. 필터에 대해 자세히 알아 보려면 tag info page을 확인하세요. 세션 범위가 지정된 JSF 관리 Bean은 관리 대상 Bean 이름이 키인 HttpSession 속성으로 저장됩니다.

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

을 아니면이 POST 액션에 따라 결정 할 때, 단지 관리 빈 액션 메소드에서 다른 결과를 반환 : 다음과 같이 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

관련 문제