2

LiferayポータルからHttpServletResponseを取得しようとしています。私は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
4

4 に答える 4

7

試すPortalUtil.getHttpServletResponse(portletResponse)

于 2010-07-22T01:49:22.507 に答える
1

これが役立つかもしれません

ポートレットで PDF ファイルを生成

于 2010-07-18T13:55:22.910 に答える
1

ポートレット ブリッジを使用している場合、FacesContext は PortletRequest/Response オブジェクトを返します。

HttpServletResponse で何をしようとしていますか?

バイナリ コンテンツを生成しようとしている場合、これは JSR 286 ポートレットのリソース フェーズでのみ機能します (それ以外の場合はヘッダーを設定できません)。JSR 168 ポートレットでは機能しません。JSR 168 ポートレットでこれを行う必要がある場合は、ヘルパー サーブレットを使用する必要があります。

いずれにせよ、API に HttpServletResponse を必要とするサードパーティのライブラリを使用しようとしている場合は、PortletRequestDispatcher を使用して JSP またはサーブレットにディスパッチし、そこで利用可能な HttpServletResponse を使用できます。

于 2010-07-18T14:01:13.923 に答える
0

ネイティブ レスポンスを取得してからキャストしてみてください。

FilterServletResponseWrapper filterResponse = (FilterServletResponseWrapper) RequestContextHolder.getRequestContext().getExternalContext().getNativeResponse();
HttpServletResponse response = (HttpServletResponse)filterResponse.getResponse();
于 2012-03-14T23:42:03.390 に答える