GateIn - 在portlet中重定向

时间:2013-12-16 08:58:38

标签: redirect portlet jboss-portal gatein

如何通过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内,而且在门户内。

2 个答案:

答案 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()