2010-07-18 10 views
2

J'essaie d'obtenir le HttpServletResponse du portail liferay. Je travaille aussi avec des icefaces.get HttpServletResponse du portail liferay

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

je reçois l'exception suivante:

Caused by: java.lang.ClassCastException: com.liferay.portlet.RenderResponseImpl cannot be cast to javax.servlet.http.HttpServletResponse 

Répondre

7

Essayez PortalUtil.getHttpServletResponse(portletResponse)

1

FacesContext renverra des objets PortletRequest/de réponse si vous utilisez le pont de portlet.

Qu'essayez-vous de faire avec HttpServletResponse?

Si vous essayez de générer du contenu binaire, cela ne fonctionnera que dans la phase Ressource d'un portlet JSR 286 (sinon vous ne pouvez pas définir d'en-têtes). Il ne fonctionnera jamais dans un portlet JSR 168. Si vous devez le faire dans un portlet JSR 168, vous devez utiliser une servlet auxiliaire. Dans tous les cas, si vous essayez d'utiliser une bibliothèque tierce qui nécessite HttpServletResponse pour son API, vous pouvez utiliser un PortletRequestDispatcher pour l'envoyer à un JSP ou un servlet, puis utiliser HttpServletResponse qui vous est disponible.

0

Essayez d'obtenir la réponse native, puis le jeter:

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