2012-08-14 3 views
0

다른보기를 가리키는 항목이있는 메뉴가 있습니다.보기가 표시되거나 변경된 후 일부 코드를 실행하십시오.

각보기에는 연결된 수신기가있는 선택 콤보 상자가 있습니다.

해당 뷰에서 세션 범위의 관리되는 bean을 사용합니다.

처음으로 뷰로 이동하면 Bean이 생성 될 때 메소드가 호출됩니다. 사용자가 선택 상자에서 값을 변경하면 같은 메서드가 호출됩니다. 그러나 뷰가 다시 표시 될 때 메서드가 호출되지 않습니다.

이는 세션 범위 Bean을 사용하기 때문에 발생합니다. 더 나은 해결책은 대신 뷰 범위 빈을 사용하는 것이었지만 대안을 찾고 있습니다. 보기가 변경 될 때 특정 코드를 실행하는 방법이 있습니까?

답변

2

preRenderView 이벤트에 리스너 메서드를 연결하는 <f:event>을 사용할 수 있습니다.

예.

public void preRenderView() { 
    // ... 
} 

이와

<f:event type="preRenderView" listener="#{bean.preRenderView}" /> 

는 응답 단계를 렌더링의 시작 부분에서 매번 호출됩니다.

+0

고맙습니다. 이것은 내가 필요한 것입니다. – Seitaridis