【问题标题】:application / pdf is not a supported mime type at liferay 6.0.6application / pdf 在 liferay 6.0.6 中不是受支持的 mime 类型
【发布时间】:2013-06-02 15:30:42
【问题描述】:

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

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

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

但它返回以下错误:

ERROR java.lang.IllegalArgumentException: application / pdf is not a supported mime type 在 com.liferay.portlet.MimeResponseImpl.setContentType (MimeResponseImpl.java: 159)........

我也尝试在文件portlet.xml中添加标签

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

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

你有什么建议吗?

【问题讨论】:

    标签: java jasper-reports liferay liferay-6


    【解决方案1】:

    你应该在jsr-286中使用public void serveResource(ResourceRequest req, ResourceResponse res)方法,在这个方法中使用res.setContentType("application/pdf")

    【讨论】:

    • &@Dragos Bobolea,谢谢回复,是否有链接或文档以供更多理解
    • 嘿 djoStack,你能解决这个问题吗?我面临着完全相同的问题。你能帮帮我吗?
    【解决方案2】:

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

    资源服务阶段对于在 portlet 中执行 ajax 内容和下载(即提供图像/文档/pdf/文件等资源)很有用。

    所以就像你创建一个renderURL&lt;portlet:renderURL /&gt;renderResponse.createRenderURL())来调用你的portlet 的renderdoView 方法一样,你需要创建一个resourceURL&lt;portlet:resourceURL /&gt; 或@ 987654334@) 调用您的 portlet 的 serveResource 方法。

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

    如需完整示例,您可以下载此source-codePortlets in Action 书的第 12 章,并参考名为:ch12_BookCatalogResourceURL 的项目。

    【讨论】:

      猜你喜欢
      • 2019-08-06
      • 2020-05-31
      • 2013-07-17
      • 2019-09-16
      • 2018-08-22
      • 2021-12-23
      • 1970-01-01
      • 2021-03-27
      • 2020-12-31
      相关资源
      最近更新 更多