如何通过支持方法适当地重定向到servlet?
class MyBean{
public String doRedirect() {
//some conditions
return "newlocation";
}
}
<h:commandButton value="Test" action="#{myBean.doRedirect}" />
这会将我重定向到newlocation.xhtml。
但是,如果我有一个WebServlet,该怎么办?
@WebServlet(urlPatterns = "/newlocation")
然后如何重定向到servlet而不是xhtml文件?
最佳答案
您不能使用JSF导航处理程序导航到非JSF资源。
只需直接使用ExternalContext#redirect()
方法:
public void doRedirect() throws IOException {
FacesContext.getCurrentInstance().getExternalContext().redirect("newlocation");
}
或者,如果不确定当前的请求路径:
public void doRedirect() throws IOException {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(ec.getRequestContextPath() + "/newlocation");
}