簡體   English   中英

liferay 6.0.6不支持application / pdf的mime類型

[英]application / pdf is not a supported mime type at liferay 6.0.6

我為Liferay 6開發了一個自定義portlet。

單擊鏈接應打開彈出窗口,以打開/保存使用Jasper Reports生成的pdf文件。

我使用response.setContentType ("application/pdf" ),其中響應為RenderResponse

但它返回以下錯誤:

錯誤java.lang.IllegalArgumentException:com.liferay.portlet.MimeResponseImpl.setContentType(MimeResponseImpl.java:159)上不支持application / pdf的mime類型。

我還嘗試將標記添加到文件portlet.xml

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

但我總是遇到同樣的錯誤。

有什么建議嗎?

您應該在jsr-286中使用public void serveResource(ResourceRequest req, ResourceResponse res)方法,並在此方法中使用res.setContentType("application/pdf")

根據Portlet 2.0(Liferay-6支持),我們有兩個新的Portlet階段: ResourceEvent

資源服務階段對於在Portlet中進行Ajax填充和下載(例如,提供圖像/文檔/ pdf /文件等資源)很有用。

因此,就像您創建一個renderURL<portlet:renderURL />renderResponse.createRenderURL() )來調用portlet的renderdoView方法一樣,您同樣需要創建一個resourceURL<portlet:resourceURL />renderResponse.createResourceURL() )調用您的portlet的serveResource方法。

在您的serveResource方法中,您可以編寫您當前在render方法中編寫的代碼(可能需要進行一些修改)以下載pdf。

有關完整示例,您可以下載《 Portlet in Action 》第十二章的源代碼 ,並參考名為ch12_BookCatalogResourceURL的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM