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