我正在重定向到另一页:
String uri = "../test/planOutput.jsf?job_id=121250";
FacesContext.getCurrentInstance().getExternalContext().dispatch(uri);
它可以,但URL不会改变, 我必须看到带有参数的新网址。
解决方案是什么?
答案 0 :(得分:6)
您根本没有将请求重定向到其他目标。您正在将请求分派给其他来源。使用ExternalContext#redirect()
代替ExternalContext#dispatch()
。
FacesContext.getCurrentInstance().getExternalContext().redirect(uri);
重定向基本上指示webbrowser在给定的URL上触发新的HTTP请求。这也是为什么你看到URL更改反映在webbrowser的地址栏中的原因。调度基本上指示Web服务器为当前请求/响应使用不同的源。由于这是在内部发生的,并且不会在新的HTTP请求中结束,因此webbrowser对更改一无所知,地址栏也不会更改。