получить HttpServletResponse от портала liferay


Я пытаюсь получить HttpServletResponse от портала liferay. Я также работаю с ледяными лицами.

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 2

4 ответа:

Попробуйте PortalUtil.getHttpServletResponse(portletResponse)

Может быть, это помогает

Создание PDF-файла в Портлете

FacesContext возвращает объекты PortletRequest / Response, если используется мост портлетов.

Что вы пытаетесь сделать с HttpServletResponse?

Если вы пытаетесь создать двоичное содержимое, это будет работать только на этапе ресурсов портлета JSR 286 (в противном случае вы не можете установить заголовки). Он никогда не будет работать в портлете JSR 168. Если вам нужно сделать это в портлете JSR 168, вам нужно использовать вспомогательный сервлет.

В любом случае, если вы пытаетесь использовать сторонний lib, который требует HttpServletResponse для своего API, вы можете использовать PortletRequestDispatcher для отправки в JSP или сервлет, а затем использовать HttpServletResponse, который доступен вам там.

Попробуйте получить собственный ответ, а затем бросить его:

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