JavaServer Faces 라이프 사이클

JSP(JavaServer Pages) 페이지를 렌더링하는 각 JavaServer Faces 요청에는 보기라고도 하는 JavaServer Faces 구성요소 트리가 관련되며 요청은 단계로 구성된 요청 처리 라이프 사이클을 통해 이동합니다. 이러한 요청 처리 라이프 사이클의 표준 단계는 복원 보기 빌드에서 시작하여, 요청 값 적용, 유효성 검증 처리, 모델 값 갱신, 응용프로그램 호출 순서로 수행됩니다.


JavaServer Faces 라이프 사이클의 다이어그램
복원 보기 빌드
JavaServer Faces 구성요소 트리는 페이지에 대한 상태 및 이벤트를 빌드하고 유지보수하기 위해 사용됩니다. 트리는 세션마다 한 번 빌드되며 사용자가 페이지로 리턴할 때 재사용됩니다. 이 단계의 끝에서, 현재 요청에 대한 FacesContext 인스턴스의 루트 특성은 이전 Faces 응답(있는 경우)에서 생성된 보기의 저장된 구성을 반영합니다.
요청 값 적용
요청 처리 라이프 사이클 중 이 단계의 목적은 각 구성요소에 현재 요청에 포함된 정보(예: 매개변수, 헤더 및 쿠키)를 사용하여 현재 값을 갱신할 수 있는 기회를 제공하는 것입니다.
유효성 검증 처리
이 요청에 대한 보기를 작성하는 과정의 일부로, 구성요소마다 0개 이상의 유효성 검증기 인스턴스를 등록할 수 있습니다. 또한 구성요소 클래스 자체는 validate() 메소드에서 유효성 검증 논리를 구현할 수 있습니다. 이 단계 끝에서, 구성된 모든 유효성 검증이 완료됩니다.

실패한 유효성 검증이 있으면 현재 요청에 해당되는 FacesContext 인스턴스의 addMessage() 메소드 호출을 통해 메시지가 대기열에 넣어지고 해당 구성요소의 valid 특성이 false로 설정됩니다. 호출된 validate() 메소드가 현재 요청에 해당되는 FacesContext 인스턴스에 대해 responseComplete()를 호출한 경우, 현재 요청의 라이프 사이클 처리는 즉시 종료해야 합니다. 호출된 validate() 메소드가 현재 요청에 해당되는 FacesContext 인스턴스에 대해 renderResponse()를 호출한 경우, 요청 처리 라이프 사이클의 응답 렌더링 단계로 제어를 전송해야 합니다. 대기열에 있는 이벤트를 처리한 이벤트 리스너에 대해서도 동일한 조건이 적용됩니다. 이러한 조건 중 어떤 조건도 발생하지 않을 경우, 제어는 다음 단계로 진행하여 모델 값을 갱신합니다.

모델 값 갱신
요청 처리 라이프 사이클의 이 단계에 도달하면, 들어오는 요청이 수행된 유효성 검증에 따라 구문적으로 그리고 의미론적으로 유효하다는 것을 나타냅니다. 또한 구성요소 트리에 있는 모든 구성요소의 로컬 값이 갱신되어, 이제는 대기열에 넣어진 응용프로그램 이벤트를 수행하기 위한 준비에서 응용프로그램의 모델 데이터를 갱신하기에 적절하다는 것을 의미합니다.
응용프로그램 호출
복원 보기 빌드에서 설명한 것처럼, 현재 요청에 해당되는 보기가 이전 요청에서 저장된 상태 정보를 통해 재구성된 경우, JavaServer Faces를 구현하면 이 웹 응용프로그램에 대한 응용프로그램 오브젝트에서 getActionListener 호출로 리턴된 ActionListener가 restoreState() 메소드의 기능으로 구성요소 트리에 있는 모든 UICommand 구성요소에 등록됩니다.
응답 렌더링
이 단계는 동시에 두 가지를 수행합니다. 클라이언트로 응답을 렌더링하고 후속 요청에서의 처리를 위해 응답 상태를 저장합니다. 한 단계에서 두 가지 책임을 처리하는 이유는 JSP 응용프로그램에서의 응답 렌더링 역할로 인해 보기가 페이지 렌더로 빌드될 수 있기 때문입니다. 따라서 보기 상태는 클라이언트로 렌더될 때까지 저장할 수 없습니다.
이벤트 처리
요청 처리 라이프 사이클의 몇몇 단계에서, 이벤트는 소스 UIComponent 인스턴스에서의 queueEvent() 메소드 호출이나 FacesEvent 인스턴스에서의 queue() 메소드 호출 등을 통해 대기열에 넣을 수 있습니다. 이렇게 대기열에 넣어진 이벤트는 이제 관심이 있는 이벤트 리스너로 브로드캐스트해야 합니다. 브로드캐스트는 현재 구성요소 트리의 루트에 있는 UIViewRoot 인스턴스에 대해 적절한 라이프 사이클 관리 메소드(processDecodes(), processValidators(), processUpdates() 또는 processApplication())를 호출할 경우의 부가 효과로 수행됩니다. 대기열에 있는 이벤트마다, 소스 UIComponent의 broadcast() 메소드를 호출하여 지정된 유형의 이벤트에 대해 이 소스 구성요소에서 관심을 등록한 모든 이벤트 리스너에 이벤트를 브로드캐스트합니다. 이 이벤트가 완전히 처리되었는지, 그리고 JavaServer Faces 구현이 이벤트 대기열에서 이벤트를 제거할 수 있는지 여부를 표시하는 부울 플래그가 리턴됩니다.

또한 이벤트 리스너는 요청 처리 라이프 사이클의 현재 단계에서 처리할 수 있도록 추가 이벤트를 대기열에 넣을 수도 있습니다. 그러한 이벤트는 원래 대기열에 있는 모든 이벤트가 브로드캐스트된 후, 라이프 사이클 관리 메소드가 리턴하기 전에 대기열에 넣어진 순서대로 브로드캐스트해야 합니다.

자세한 작동 요구사항에 대해서는 UIComponent.broadcast() 메소드의 API 참조사항을 참조하십시오.

관련 개념
JavaServer Faces
관련 태스크
Faces 응용프로그램 작성 - 개요
Faces JSP 페이지 작성
관련 참조
Faces 구성요소 참조
Faces 구성요소의 속성
이용약관 | 피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.