如何通过URL(在backingbean中)将用户重定向到portlet中的其他页面?我们在JBoss 5.1.0上使用GateIn 3.1
通常,FacesContext.getCurrentInstance().getExternalContext().redirect("url")
就足够了,但在这里它不起作用,它不会重定向用户。
context.getApplication().getNavigationHandler().handleNavigation(context, null, page)
也不起作用。
我们希望避免为我们可以重定向到的每一个可能的页面制定导航规则。
编辑:a4j:commandButton
似乎造成了一些问题,在我们用h:commandButton
替换它之后,我们被重定向,但不仅在portlet中,而且在门户中。
要使sendRedirect可用,您必须将对象响应转换为HttpServlet响应:
HttpServletResponse objHttpServletResponse = (HttpServletResponse)
FacesContext.getCurrentInstance()
.getExternalContext()
.getResponse();
objHttpServletResponse.sendRedirect(url);
这是一个302重定向,由浏览器管理。
我发现唯一可行的其他选择(在faces-config.xml
中有许多导航案例)是使用FacesContext.getCurrentInstance().getViewRoot().setViewId(page)
重定向,其中页面为String page = FacesContext.getCurrentInstance().getViewRoot().getViewId()
。