我为Liferay 6开发了一个自定义portlet。
单击链接应该打开弹出窗口,打开/保存使用Jasper Reports生成的pdf文件。
我使用response.setContentType ("application/pdf"),其中的响应是RenderResponse。
但是它返回以下错误:
错误java.lang.IllegalArgumentException: application / pdf不是java.lang.IllegalArgumentException支持的mime类型(MimeResponseImpl.java: 159).
我还试图在文件portlet.xml中添加标记
<supports>
<mime-type> application/pdf </mime-type>
<portlet-mode> view </portlet-mode>
</supports>但我总是犯同样的错误。
你有什么建议吗?
发布于 2013-06-02 19:32:11
你应该在jsr-286中使用public void serveResource(ResourceRequest req, ResourceResponse res)方法,在这个方法中使用res.setContentType("application/pdf");
发布于 2013-07-26 14:39:28
根据Portlet2.0(由Liferay-6支持),我们有两个新的Portlet阶段:Resource和Event。
资源服务阶段对于在portlets中执行ajax操作以及下载资源(如图像/文档/pdf/文件等)非常有用。
因此,就像创建一个renderURL (<portlet:renderURL />或renderResponse.createRenderURL())来调用portlet的render或doView方法一样,您需要创建一个resourceURL (<portlet:resourceURL />或renderResponse.createResourceURL())来调用portlet的serveResource方法。
在您的serveResource方法中,您可以编写当前在呈现方法中编写的代码(可能需要进行一些修改)来下载pdf。
要获得完整的示例,您可以下载此ch12_BookCatalogResourceURL.图书第12章的源代码,并参考名为:Portlet在行动中的项目
https://stackoverflow.com/questions/16884276
复制相似问题