如何通过支持方法将属性重定向到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文件?
答案 0 :(得分:2)
您不能使用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");
}
答案 1 :(得分:-1)
您可以访问原始HTTPServletResponse并使用其API进行重定向
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.sendRedirect(URL);