2011-03-17 4 views
2

으로 다른 페이지로 리디렉션 :JSF 내가 다른 페이지로 리디렉션하고있어 매개 변수

String uri = "../test/planOutput.jsf?job_id=121250"; 
FacesContext.getCurrentInstance().getExternalContext().dispatch(uri); 

그것은 작동하지만 URL이 변경되지 않습니다, 내가 매개 변수를 사용하여 새 URL을 참조해야합니다.

해결책은 무엇입니까?

답변

6

요청을 다른 대상으로 전혀 리디렉션하지 않습니다. 요청을 다른 소스로 전달 중입니다. ExternalContext#dispatch() 대신 ExternalContext#redirect()을 사용하십시오.

FacesContext.getCurrentInstance().getExternalContext().redirect(uri); 

리디렉션은 기본적으로 웹 브라우저에게 지정된 URL에 대한 새 HTTP 요청을 시작하도록 지시합니다. 웹 브라우저의 주소 표시 줄에 반영된 URL 변경 사항을 확인하는 이유이기도합니다. 파견은 기본적으로 웹 서버가 현재 요청/응답에 대해 다른 소스를 사용하도록 지시합니다. 내부적으로 발생하고 새로운 HTTP 요청으로 끝나지 않으므로 웹 브라우저는 변경 사항에 대해 모르고 주소 표시 줄은 변경되지 않습니다.

+0

@BalusC, 미안하지만, JSF에 관한 좋은 자습서가 있습니까? 스프링과 통합하는 것이 현명하다는 것을 알고 있습니까? 그렇다면 좋은 튜토리얼도 있으십니까? –

+0

빠른 답변을 해주신 BalusC !!! – Rivki

+0

@ 리브키 : 천만에요. 문제/문제를 해결했거나 답변 한 경우 수락 된 답을 표시하는 것을 잊지 마십시오. @ 엘리트 신사 : 당신이 아무것도 시작하지 않으면 [이 답변] (http://stackoverflow.com/q/5312566#5312566)을 확인하십시오. 봄에 관해서, 그것은 달려있다. Java EE 6을 사용하고 아무 것도 시작하지 않았다면, 내장 API에 기회를 주겠다. CDI (JSR299, Weld)는 Spring을 대체하기위한 것입니다. 기존의 Spring 백엔드로 작업한다면, 변경하는 노력은 가치가 없다고 생각합니다. 따라서 Spring에만 충실하십시오. Spring-JSF 통합에 관해서는 : 나는 잘 모른다. 절대하지 않았어. – BalusC