从 liferay 门户获取 HttpServletResponse
Posted
技术标签:
【中文标题】从 liferay 门户获取 HttpServletResponse【英文标题】:get HttpServletResponse from liferay portal 【发布时间】:2011-03-17 13:01:27 【问题描述】:我正在尝试。我也在使用 icefaces。
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
【问题讨论】:
【参考方案1】:试试PortalUtil.getHttpServletResponse(portletResponse)
【讨论】:
【参考方案2】:也许这有帮助
Generate PDF File in Portlet
【讨论】:
【参考方案3】:如果您使用的是 portlet 桥,FacesContext 将返回 PortletRequest/Response 对象。
你想用 HttpServletResponse 做什么?
如果您尝试生成二进制内容,这仅适用于 JSR 286 portlet 的资源阶段(否则您无法设置标头)。它永远不会在 JSR 168 portlet 中工作。如果您需要在 JSR 168 portlet 中执行此操作,则需要使用帮助 servlet。
在任何情况下,如果您尝试使用需要 HttpServletResponse 作为其 API 的第三方库,您可以使用 PortletRequestDispatcher 调度到 JSP 或 servlet,然后使用那里可用的 HttpServletResponse。
【讨论】:
【参考方案4】:尝试获取本机响应,然后进行转换:
FilterServletResponseWrapper filterResponse = (FilterServletResponseWrapper) RequestContextHolder.getRequestContext().getExternalContext().getNativeResponse();
HttpServletResponse response = (HttpServletResponse)filterResponse.getResponse();
【讨论】:
以上是关于从 liferay 门户获取 HttpServletResponse的主要内容,如果未能解决你的问题,请参考以下文章
Liferay7 BPM门户开发之29: 核心kernel.util包下面的通用帮助类ParamUtilGetterUtil使用