我正在重定向到另一个页面:
String uri = "../test/planOutput.jsf?job_id=121250";
FacesContext.getCurrentInstance().getExternalContext().dispatch(uri);
它可以工作,但 URL 没有改变, 我必须看到带有参数的新 URL。
解决办法是什么?
最佳答案
您根本没有将请求重定向到不同的目标。您正在将请求分派(dispatch)到不同的来源。使用ExternalContext#redirect()
而不是ExternalContext#dispatch()
.
FacesContext.getCurrentInstance().getExternalContext().redirect(uri);
重定向基本上指示网络浏览器在给定的 URL 上触发新的 HTTP 请求。这也是您看到 URL 更改反射(reflect)在网络浏览器地址栏中的原因。调度基本上指示网络服务器为当前请求/响应使用不同的源。由于这是在内部发生的并且不会以新的 HTTP 请求结束,因此网络浏览器对更改一无所知,并且地址栏不会更改。
关于java - JSF带参数重定向到其他页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340051/