2009-11-11 5 views
7

javax.faces.application.ViewExpiredException을 가지고 있는데 로그인 페이지로 사용자를 보내려고합니다.com.sun.faces.enableRestoreView11Compatibility JSF 1.2 대신 무엇을 사용합니까?

web.xml의

... 
    <context-param> 
     <param-name>com.sun.faces.enableRestoreView11Compatibility</param-name> 
     <param-value>true</param-value> 
    </context-param> 
... 
<error-page> 
    <exception-type>javax.faces.application.ViewExpiredException</exception-type> 
    <location>/errors/sessionExpired.jsf</location> 
</error-page> 

sessionExpired.jsf

.... 
<c:redirect url="/index.jsf" /> 

하지만 enableRestoreView11Compatibility는 JSF 1.2 용액은 무엇인가, JSF 1.1에서 사용 된 방법?

답변

12

com.sun.faces.enableRestoreView11Compatibility은 JSF 1.2에 JSF 1.1처럼 동작하도록 지시하는 JSF 1.2 설정입니다.

com.sun.faces.enableRestoreView11Compatibility == true은 "ViewExpiredException을 던지지 말고 이전 버전이 만료 된 경우 새보기를 만듭니다."라는 의미입니다.

은 JSF 1.1 행동에 IBM notes

의견 : 새로운보기, 그리고 같은 상태로보기에 보통 항목은 더 이상 존재하지 않기 때문에이 불리한 행동을 할 수 있습니다

.

JSF 1.2 동작이로 the spec에 정의 된 기본 : 요청이 게시가

경우 현재 요청 뷰 식별자에 대한 FacesContext 인스턴스를 전달하고, 복귀, ViewHandler.restoreView() 전화 복원 된보기에 대해서는 UIViewRoot입니다. ViewHandler.restoreView()에서 반환 값이 null 인 경우 ViewExpiredException에 적절한 오류 메시지가 표시됩니다. javax.faces.application.ViewExpiredException is a 뷰 식별자에 대해 예상 된 뷰가 반환되지 않았 음을 응용 프로그램에 알리기 위해 throw해야하는 FacesException입니다. 응용 프로그램은이 예외에 따라 일부 작업을 수행하도록 선택할 수 있습니다.

ViewExpiredException 뷰가 만료되면, com.sun.faces.enableRestoreView11Compatibility 매개 변수를 제거하거나 false로 설정 던진합니다.


com.sun 네임 스페이스는 아마 모든 JSF 구현 작동하지 않도록 매개 변수가하는 일/인 Mojarra 및 파생 구현 고유의 설정입니다 제안합니다.

+1

나는 ...을 사용하여 로그인 페이지로 사용자를 리디렉션 할 수 있다고 생각했지만이 호환성 매개 변수가 없으면 작동하지 않습니다. 이 리디렉션을 수행하기 위해 PhaseListener를 작성해야합니다. 그렇지 않은 경우 쉬운 방법이있을 수 있습니다. – aindl

+0

JSF 2.2에서이 설정이 유효합니까? 아니면 ither 옵션이 있습니까? –

관련 문제