마지막으로 나는 위의 문제에 대한 해결책을 찾을 수 있었다.
필터에서 응답 헤더 "위치"를으로 설정하고 클라이언트 측에서 응답을 필터링하는 데 사용할 다른 사용자 지정 헤더를 설정합니다.
필터 코드 :
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
httpServletResponse.setHeader("x-timeout-status", "true");
httpServletResponse.setHeader("Location", httpServletResponse
.encodeRedirectURL(sessionexpiryurl));
Richfaces는 Richfaces 라이브러리 내부에 포장되어있는 AJAX 호출을 호출하는 동안 필요한 다양한 콜백와 자바 스크립트 파일을 가지고있다. "processResponse"이라는 콜백 함수가 하나 있습니다.이 콜백 함수는 JSF Ajax 구성 요소에 의해 시작된 모든 AJAX 호출에 대한 응답을 수신하면 호출됩니다. 리디렉션 기능을 처리하기 위해이 기능을 사용했습니다.
JS 번호 :
var originalAjaxProcessResponse = A4J.AJAX.processResponse;
A4J.AJAX.processResponse = function(req) {
if (req.getResponseHeader('x-timeout-Status') != undefined && req.getResponseHeader('x-timeout-status') == 'true') {
window.location.href = req.getResponseHeader('Location');
} else {
originalAjaxProcessResponse(req);
}
}
여기서 우리가 우리의 특정한 경우를 처리하고 richfaces 의해 제공되는 내장 가공 처리 AJAX 호출 응답의 나머지를 위임하는 방법을 재정의한다.
당신이
~ 라게
를이 솔루션에 어떤 제한을 참조하거나이 문제에 더 나은 솔루션이 있으면 알려 주시기 바랍니다