2

Liferay 6 用のカスタム ポートレットを開発しました。

リンクをクリックするとポップアップが開き、Jasper Reports を使用して生成された PDF ファイルを開く/保存する必要があります。

私はresponse.setContentType ("application/pdf") を使用します。応答はRenderResponseです。

ただし、次のエラーが返されます。

エラー java.lang.IllegalArgumentException: アプリケーション / pdf は、com.liferay.portlet.MimeResponseImpl.setContentType でサポートされている MIME タイプではありません (MimeResponseImpl.java: 159)........

また、ファイルにタグを追加しようとしましたportlet.xml

<supports>
    <mime-type> application/pdf </mime-type>
    <portlet-mode> view </portlet-mode>
</supports>

しかし、私はいつも同じエラーが発生します。

提案はありますか?

4

2 に答える 2

0

ポートレット 2.0 (Liferay-6 でサポートされている) に従って、2 つの新しいポートレット フェーズがあります:ResourceEvent.

リソース提供フェーズは、ポートレットで ajax を実行したり、ダウンロード、つまり画像/ドキュメント/pdf/ファイルなどのリソースを提供したりするのに役立ちます。

したがって、renderURL(<portlet:renderURL />または) を作成してポートレットのまたはメソッドrenderResponse.createRenderURL()を呼び出すのと同様に、 (または)を作成してポートレットのメソッドを呼び出す必要があります。renderdoViewresourceURL<portlet:resourceURL />renderResponse.createResourceURL()serveResource

そして、あなたのserveResourceメソッドでは、レンダーメソッドで現在書いたコードを書くことができます(いくつかの変更が必要になる場合があります)。

完全な例については、 Portlets in Actionブックの第 12 章のソース コードをダウンロードし、 ch12_BookCatalogResourceURLという名前のプロジェクトを参照してください。

于 2013-07-26T14:39:28.270 に答える
0

public void serveResource(ResourceRequest req, ResourceResponse res)jsr-286 のメソッドを使用しres.setContentType("application/pdf")、このメソッドで使用する必要があります。

于 2013-06-02T19:32:11.377 に答える