0
로그인 상태, 영구 로그인 상태,보기 요청 등에 따라 다른 페이지로 전달되는 RESTORE_VIEW 이전에 실행중인 JSF 위상 수신기를 필사적으로 작성하려고합니다. 조금 복잡하지만 모든 것을 다 풀기 위해 다음 중 아무 것도 제대로 전달하지 못합니다.JSF : handleNavigation, dispatch, PhaseView가 PhaseListener에서 작동하지 않습니다.
faces-config에 탐색 케이스가있는 경우에만 작동하는 것처럼 보입니다. "... 탐색 케이스가 없습니다.
다음과String path = "/user/login.xhtml";
FacesContext context = event.getFacesContext(); // PhaseEvent event;
context.getApplication().getNavigationHandler().handleNavigation(context, null, path);
같은 것 "... 발견
context.getExternalContext().dispatch(path);
그리고 마지막 getViewRoot에서 16,()는 항상 null을 반환 :
context.getViewRoot().setViewId(path);
어떻게 앞으로 I 네비게이션 케이스를 정의하지 않고 할 수 있습니까?
그것은 재 작동하는지 밝혀졌다 :
String requestUrlString = ((HttpServletRequest)(FacesContext.getCurrentInstance().getExternalContext().getRequest())).getRequestURL().toString();
URL requestUrl = new URL(requestUrlString);
String linkUrlString = requestUrl.getProtocol() + ":" + "//"
+ requestUrl.getHost() + ":" + requestUrl.getPort()
+ context.getExternalContext().getApplicationContextPath() + "/faces" + path + ".xhtml";
context.getExternalContext().redirect(linkUrlString);
감사합니다! 나를 위해 완벽하게 작동합니다. 그러나 다른 사람들은 리디렉션이 결과와 함께 작동하지 않지만 전체 URL이 필요하다는 점을 기억하십시오. 게시자가 코드 작성 방법을 변경했습니다. – mpunktw