2012-12-22 4 views
15

이들의 실행 순서는 무엇입니까? 여기 jsf f : events의 실행 순서

가능 f:event 이벤트 이름에 대한 질문입니다 : List of JSF 2 events?

preRenderComponent 
preRenderView 
postAddToView 
preValidate 
postValidate 
나는 사용자가 세션 빈에 저장되어있는 경우가 로그인이되지 않을 경우 것이 필요 로그인 사이트로 리디렉션되어 있는지 확인하려면

사용 된 변환기가 로그인 한 사용자에 의존하므로 뷰 매개 변수 변환 단계 이전에 발생합니다. 'preValidate'는 전환 후 발생하는 것으로 보이므로 이전 이벤트가 필요합니다.

<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/> 
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/> 

내가 너무 'beanB'에서 'checkLoggedIn()를'넣어,하지만 난 쉽게 재사용 할 수 있도록 단지 확인을 위해 콩을 범위 별도의 요청을 사용하려고 할 수 있었다.

답변

26

그 실행 순서는 무엇입니까? (통상시 뷰 위상을 복원하고, 또한 중에있을 Response 단계, 예를 들어 네비게이션 렌더링 할) 구성 요소도 제작 시간 동안 볼 첨가 직후

  • postAddToView 실행.
  • preValidate은 구성 요소가 유효성 검사되기 바로 전에 실행됩니다 (일반적으로 유효성 검사 단계 중에 있지만 immediate="true" 인 경우 요청 값 단계 적용 가능).
  • postValidate은 구성 요소의 유효성을 검사 한 직후에 실행됩니다 (일반적으로 유효성 검사 단계 중에 있지만 immediate="true" 인 경우 요청 값 단계 적용 가능).
  • preRenderView은 렌더링 응답 단계에서보기가 렌더링되기 바로 전에 실행됩니다.
  • preRenderComponent은 렌더링 응답 단계에서 구성 요소가 렌더링되기 바로 전에 실행됩니다.

javadoc 소개에 대한 자세한 설명을 보려면 링크를 클릭하십시오.


나는 사용자가 세션 빈에 저장되어있는 경우가 로그인이되어 있는지 확인하려면

사용 된 컨버터 의존하기 때문에보기-PARAM 변환 단계 전에 발생해야하는 로그인 사이트로 리디렉션하지 않을 경우 로그인 한 사용자. 'preValidate'는 전환 후 발생하는 것으로 보이므로 이전 이벤트가 필요합니다.

JSON 이벤트가 아닌 servlet filter을 사용해야합니다. 나는 전에 몇 가지 예를 게시 한 :

+1

'preValidate' /'postValidate'가''= 즉각 "사실"의 경우에는 모든 구성 요소에 호출되지 않습니다. Mojarra 소스 코드를 보면이를 확인할 수 있습니다. 그게 그렇게 생각 나니? –