【问题标题】:GateIn - redirect within portletGateIn - 在 portlet 中重定向
【发布时间】:2013-12-16 08:58:37
【问题描述】:

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

【问题讨论】:

  • 你试过 FacesContext.getCurrentInstance().getExternalContext().getResponse().sendRedirect("url"); FacesContext.getCurrentInstance().responseComplete(); ?
  • 我没有 sendRedirect 方法。我尝试使用 responseComplete,但这会导致门户重定向之类的事情,因为我得到的空白页面只有“”。

标签: redirect portlet jboss-portal gatein


【解决方案1】:

要使 sendRedirect 可用,您必须将对象响应转换为 HttpServletResponse :

HttpServletResponse objHttpServletResponse = (HttpServletResponse)
                          FacesContext.getCurrentInstance()
                                      .getExternalContext()
                                      .getResponse();
objHttpServletResponse.sendRedirect(url);

这是一个 302 重定向,由浏览器管理。

【讨论】:

  • 我知道,但是响应不是 HttpServletResponse 对象,它是 org.jboss.portletbridge.richfaces.BufferedResourceResponseWrapper。
【解决方案2】:

唯一的其他选择(在faces-config.xml 中有许多导航案例)我发现有效的是使用FacesContext.getCurrentInstance().getViewRoot().setViewId(page) 进行重定向,其中页面为String page = FacesContext.getCurrentInstance().getViewRoot().getViewId()

【讨论】:

    猜你喜欢
    • 2012-05-25
    • 2013-10-09
    • 2011-09-01
    • 2013-09-05
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多