如何通过URL(在支持bean中)将用户重定向到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内,而且在门户内。
答案 0 :(得分:0)
要使sendRedirect可用,您必须将对象响应强制转换为HttpServletResponse:
HttpServletResponse objHttpServletResponse = (HttpServletResponse)
FacesContext.getCurrentInstance()
.getExternalContext()
.getResponse();
objHttpServletResponse.sendRedirect(url);
这是在进行302重定向,由浏览器管理。
答案 1 :(得分:0)
唯一的其他选择(在faces-config.xml
中包含许多导航案例)我发现作品正在使用FacesContext.getCurrentInstance().getViewRoot().setViewId(page)
进行重定向,其中页面为String page = FacesContext.getCurrentInstance().getViewRoot().getViewId()
。