2014-06-17 12 views
1

손실 동일한 대화 범위 내의 페이지, 대화의 초기화 후 범위가 지정된 bean : createHandler.Omnifaces Faces.redirect 내가 org.omnifaces.util.Faces 번호에 문제가 리디렉션 대화 콩 범위가 대화의 범위

NavigationHandler에서 # gotoCreateCar는 단지 Faces.redirect (createCarPage) 호출입니다.

내가 좋아하는 경우 매개 변수 cid가 전송되지 않고 대화를 잃어 버립니다. 나는 얼굴-config.xml 파일에서 네비게이션 규칙을 정의하는 경우

는 :

<navigation-case> 
    <from-outcome>createCar</from-outcome> 
    <to-view-id>/portal/createCar.xhtml</to-view-id> 
    <redirect /> 
</navigation-case> 

과 NavigationHandler # gotoCreateCar에서

그냥 필요한 결과를 반환을 - 그것은 잘 작동합니다.

아마도이 두 가지 탐색 방법의 차이점에 대한 모든 세부 사항을 이해하지 못할 수도 있습니다. 누군가가 저를 문제를 이해하도록 도울 수 있다면 고맙겠습니다.

감사합니다.

답변

3

대화 전파는 탐색 처리기에서 처리합니다. Faces#redirect()은 네비게이션 핸들러를 사용하지 않는 ExternalContext#redirect()으로 위임합니다. 대신 NavigationHandler#handleNavigation()에 위임 한 Faces#navigate()을 사용하는 것이 좋습니다.

public void gotoCreateCar() { 
    // ... 

    Faces.navigate("/portal/createCar.xhtml?faces-redirect=true"); 
} 

(참고 : <navigation-case>이 경우에 필요하지 않습니다)

는 다른 방법으로, 단지 액션 메소드에서 정확히 문자열을 반환합니다. 이 같은 @PostConstruct 또는 preRenderView을 탐색 경우 결과를 반환 지원하지 않는 (청취자) 메소드 내부에있을 때

public String gotoCreateCar() { 
    // ... 

    return "/portal/createCar.xhtml?faces-redirect=true"; 
}  

Faces#navigate()에만 유용합니다.

+0

감사합니다. 또한 ExternalContext # redirect와 네비게이션 핸들러 리다이렉트의 차이점을 설명 할 수 있습니까? – golinko

+0

JSF 탐색 핸들러는 사용하지 않지만 다른 것은 사용합니다. – BalusC

+0

네비게이션 핸들러가 리다이렉션과 ExternalContext에 대한 대화를 처리하는 대신 일반 리디렉션을 수행합니까? 미안, 나는 단지 나를 위해 질문을 명확히하려고 노력한다. – golinko