получить HttpServletResponse с портала LifeRay - PullRequest
2 голосов
/ 18 июля 2010

Я пытаюсь получить 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 ]

7 голосов
/ 22 июля 2010

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

1 голос
/ 18 июля 2010

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

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

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

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

1 голос
/ 18 июля 2010

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

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

0 голосов
/ 15 марта 2012

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

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