2015-01-21 3 views
0

하나의 EAR에 3 개의 전쟁이 있습니다. 사용자가 페이지의 링크를 클릭하면 제어가 Bean으로 이동하고 비즈니스 논리가 사용자를 탐색 할 위치를 결정합니다. 결과 페이지는 세 가지 전쟁 중 하나에있을 수 있습니다.빈을 통해 하나의 전쟁에서 다른 JSF로 이동

또한 URL을 요청해야 사용자가 취소 링크를 클릭하기로 결정한 경우 다시 요청 페이지로 이동할 수 있습니다.

<from-view-id>/GeneralInfo.xhtml</from-view-id> 
     <navigation-case> 
      <from-action>#{registrationBean.goToLogin}</from-action> 
      <from-outcome>Success</from-outcome> 
      <to-view-id>/LoginInfo.xhtml</to-view-id> 
     </navigation-case> 

을하지만이 탐색은 하나의 전쟁 내부 페이지 사이의 탐색 제한됩니다

나는 얼굴-config.xml에 예컨대 내비게이션을 정의하여 JSF를 사용하여 탐색 할 수 있습니다.

두번째 옵션은 얼굴도 제 3 자 서버 URL의 예에 리디렉션 할 수있는 리디렉션 사용 : 내가

FacesContext.getCurrentInstance().getExternalContext().getRequest().getRequestURL(); 

내 질문은 코드 아래 사용하여 URL을 요청하는 검색 할 수 없습니다 2 옵션을 사용 FacesContext.getCurrentInstance().getExternalContext().redirect('login.xhtml')

,인가 (JSF 구성을 가지고있는) 다른 전쟁으로 페이지를 탐색 할 수 있고 URL을 요청할 수있는 제 3의 옵션.

다른 것이 필요한지 알려주세요.

감사합니다.

+0

은 무엇 당신의 문제? – Eelke

답변

1

JSF 탐색 사례를 사용하여 다른 응용 프로그램 컨텍스트의 페이지로 이동할 수 없습니다. 따라서 리디렉션 만 보내는 것이 유일한 옵션입니다. 당신이 리디렉션과 함께 추가 매개 변수를 전달하려는 경우, 다음 요청 쿼리 문자열 매개 변수로 전달할 다음과 같이

String from = request.getRequestURL().toString(); 
externalContext.redirect("/othercontext/login.xhtml?from=" + URLEncoder.encode(from, "UTF-8")); 

다른 응용 프로그램은 그냥 리디렉션 할 수 있습니다 :

String from = request.getParameter("from"); 
externalContext.redirect(from);