반응형
JSF(JavaServer Faces) 초기 페이지 요청 여부 판단 방법

 

 

◆ isPostback() 이란?


FacesContext.getCurrentInstance().isPostback()은 JavaServer Faces(JSF)에서 제공하는 메서드로, 

현재 요청이 “초기 페이지 요청”인지 아니면 이미 렌더링된 뷰에 대해 발생한 “포스트백(Postback)” 요청인지를 구분해 주는 역할을 한다.

 

 

◆ 사용법


메서드 호출 시 현재 요청이 포스트백(웹 개발에서의 포스트백은 동일한 웹 페이지를 다시 호출하는 것을 의미)이면 true를 반환하며 초기 페이지 요청일 경우 false를 반환해 준다.

  • true : 폼 제출이나 AJAX 호출 등, 이미 렌더링 된 뷰에 대해 발생한 POSTBACK 요청
  • false : 사용자가 처음 페이지를 요청한 초기 요청
@PostConstruct
    public void init() {
        FacesContext fc = FacesContext.getCurrentInstance(); //현재 서블릿 요청에 대응하는 JSF의 컨텍스트 객체를 취득
        if (!fc.isPostback()) {
            //최초 페이지 로드 시에만 실행할 초기화 로직 삽입
        }
    }

 

 

◆ 상황에 따른 결과 예시


상황 HTTP 메서드 isPostback() 반환값
브라우저 주소창에 /page.xhtml 입력 GET false
화면에 있는 <h:commandButton> 클릭 POST true
<h:commandLink> 등으로 같은 뷰로 돌아오기 POST/GET (※1) true(POST)/false(GET)
다른 페이지로 이동 후 다시 링크 클릭 GET false
뒤로가기 버튼 클릭 (캐시) 판별 불가 (JSF 요청 없음)

※1: JSF에서 <h:commandLink> 기본은 POST이지만 faces-redirect=true 같은 옵션을 걸면 GET 리다이렉트가 된다.

 

 

참조
isPostback
https://docs.oracle.com/javaee/6/api/javax/faces/render/ResponseStateManager.html#isPostback(javax.faces.context.FacesContext
isPostback
https://docs.oracle.com/javaee/7/api/javax/faces/context/FacesContext.html#isPostback--

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
반응형