문제

JSF 문서에서 읽었습니다 ResponseStateManager a isPostBack() 방법. 어떻게 (그리고 어디에) 인스턴스를 가질 수 있습니까? ResponseStateManager?

도움이 되었습니까?

해결책

내가 포스트 백에 있는지 아는 방법?

JSF 버전에 따라 다릅니다.

JSF 1.0/1.1에는 아니요 ResponseStateManager#isPostback() 사용 가능한 방법. 확인하는 경우 확인하십시오 javax.faces.ViewState 매개 변수는 요청 매개 변수 맵에 ExternalContext#getRequestParameterMap().

public static boolean isPostback() {
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    return externalContext.getRequestParameterMap().contains("javax.faces.ViewState");
}

JSF 1.2에서 실제로 사용됩니다 ResponseStateManager#isPostback() 실제로는 사실을 확인합니다 javax.faces.ViewState 요청 매개 변수 맵의 매개 변수입니다.

public static boolean isPostback() {
    FacesContext context = FacesContext.getCurrentInstance();
    return context.getRenderKit().getResponseStateManager().isPostback(context);
}

JSF 2.0에서 대신 사용하십시오 FacesContext#isPostback(), 표지 아래에서 실제로 대의원 ResponseStateManager#isPostback().

public static boolean isPostback() {
    return FacesContext.getCurrentInstance().isPostback();
}

다른 팁

실제로, JSF1.2 전에, Ispostback은 FaceContext의 현재 인스턴스의 요청과.

JSF1.2 이후 ResponseStateManager (응답을 생성하는 데 사용되는 특정 렌더링 기술을 알고있는 StateManager에 대한 헬퍼 클래스, a. 싱글 톤 초록 수업, 렌더 키트에 의해 평가되었습니다.)

수명주기의 복원보기 단계에서 ViewHandler는 ResponseStateManager 객체를 검색합니다 요청이 포스트 백 또는 초기 요청인지 테스트하기 위해.

요청이 PostBack 인 경우 TherestoreView ViewHandler 메소드가 호출됩니다. 이 메소드는 TherePonsestateManager 객체를 사용하여 구성 요소 트리를 다시 작성하고 상태를 복원합니다. 트리가 구축되고 상태가 복원 된 후 렌더 응답 단계가 다시 발생할 때까지 ViewHandler 인스턴스가 필요하지 않습니다.

위에서 언급 한 기사 (맞춤형 렌더 키트를 만들고 사용합니다)은 RenderKit (구성 요소를 렌더링하는 태그를 구현하는 태그 핸들러에 의해 정의 된)을 통해 응답을 구현/얻는 방법을 보여줍니다.
이것이 당신이 당신의 상황에서 자신의 응답을 얻기에 충분할 수 있습니까?

JSF1.2의 경우

public static boolean isPostback(){
    FacesContext context = FacesContext.getCurrentInstance();
    return context != null && context.getExternalContext().getRequestParameterMap().containsKey(ResponseStateManager.VIEW_STATE_PARAM);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top