application / pdf在liferay 6.0.6中不是受支持的mime类型

时间:2013-06-02 15:30:42

标签: java jasper-reports liferay liferay-6

我为Liferay 6开发了一个自定义portlet。

单击链接应打开弹出窗口以打开/保存使用Jasper Reports生成的pdf文件。

我使用response.setContentType ("application/pdf"),其中响应为RenderResponse

但它返回以下错误:

  

错误java.lang.IllegalArgumentException:application / pdf不是受支持的mime类型   at com.liferay.portlet.MimeResponseImpl.setContentType(MimeResponseImpl.java:159)........

我还尝试在文件portlet.xml

中添加标记
<supports>
    <mime-type> application/pdf </mime-type>
    <portlet-mode> view </portlet-mode>
</supports>

但我总是得到同样的错误。

你有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您应该在jsr-286中使用public void serveResource(ResourceRequest req, ResourceResponse res)方法并在此方法中使用res.setContentType("application/pdf");

答案 1 :(得分:0)

根据Portlet 2.0(Liferay-6支持),我们有2个新的portlet阶段:ResourceEvent

资源服务阶段对于在portlet中执行ajax和下载即图像/文档/ pdf /文件等服务资源非常有用。

就像您创建renderURL<portlet:renderURL />renderResponse.createRenderURL())来调用portlet的renderdoView方法一样,您需要创建resourceURL<portlet:resourceURL />renderResponse.createResourceURL())来调用portlet的serveResource方法。

在您的serveResource方法中,您可以编写您在渲染方法中编写的代码(可能需要进行一些修改)以下载pdf。

有关完整示例,您可以为source-code第12章下载此Portlets in Action,并参考名为 ch12_BookCatalogResourceURL 的项目。