получить 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 ответа:
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();