代码之家  ›  专栏  ›  技术社区  ›  Saher Ahwal

从liferay门户获取HttpServletResponse

  •  2
  • Saher Ahwal  · 技术社区  · 14 年前

    PortletResponse response1 = (PortletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
            HttpServletResponse response = (HttpServletResponse)response1;
    

    我得到以下例外:

    Caused by: java.lang.ClassCastException: com.liferay.portlet.RenderResponseImpl cannot be cast to javax.servlet.http.HttpServletResponse
    
    4 回复  |  直到 14 年前
        1
  •  7
  •   Parkash Kumar    9 年前

    尝试 PortalUtil.getHttpServletResponse(portletResponse)

        2
  •  1
  •   Feras Odeh    14 年前
        3
  •  1
  •   BCG    14 年前

    如果您正在使用portlet桥,FacesContext将返回PortletRequest/Response对象。

    你想用HttpServletResponse做什么?

    在任何情况下,如果您试图使用第三方lib,该lib需要HttpServletResponse作为其API,那么您可以使用PortletRequestDispatcher来调度到JSP或servlet,然后使用在那里可用的HttpServletResponse。

        4
  •  0
  •   Nat Ritmeyer    12 年前

    尝试获取本机响应,然后将其强制转换为:

    FilterServletResponseWrapper filterResponse = (FilterServletResponseWrapper) RequestContextHolder.getRequestContext().getExternalContext().getNativeResponse();
    HttpServletResponse response = (HttpServletResponse)filterResponse.getResponse();