Spring Thymeleaf 下载生成的报告

Posted

技术标签:

【中文标题】Spring Thymeleaf 下载生成的报告【英文标题】:Spring Thymeleaf download a generated report 【发布时间】:2020-04-28 08:24:13 【问题描述】:

我有一个简单的 thymeleaf 表单,其中包含一个作为报告类型的下拉列表和一个用于生成所选报告的按钮。我需要提供浏览器的另存为/打开窗口,以便用户可以看到报告。

报表执行的结果可能是

A/ 报告本身。在这种情况下,我需要提供一个 HttpServletResponse。

B/ 报告为空。在这种情况下,我需要使用向用户显示消息的 Model 属性重新加载视图。

C/ 报告生成期间的任何类型的错误。在这种情况下,我会记录错误,并使用稍微不同的消息重新加载视图,通知用户该问题。这也通过 Model 属性进行管理。

在生成报告时,我会隐藏“生成”按钮并显示进度条。

到目前为止,我正在提交表单。当有 B 或 C 时,它运行良好。但在 A 中,我不知道如何赶上提交完成。所以,我可以显示按钮并隐藏进度条。

【问题讨论】:

【参考方案1】:

在报告生成结束时,您可以在 html 页面上提供一个链接,该链接将重定向到一个端点,该端点返回一个带有 InputStreamResource 正文的 ResponseEntity(有关详细信息,请参阅 Return a stream with Spring MVC's ResponseEntity)

【讨论】:

是的,但在这种情况下,用户必须点击两次。我希望在报告准备好时自动显示另存为对话框。但 UI 也必须刷新。

以上是关于Spring Thymeleaf 下载生成的报告的主要内容,如果未能解决你的问题,请参考以下文章

从 DB 生成 Thymeleaf 和 Spring 图像 - 会遇到奇怪的行为

由于隐藏的输入,带有复选框的 Thymeleaf Spring 表单会生成嘈杂的 url

使用 Spring Boot 和 Thymeleaf 创建文件下载链接

如何在不使用 @EnableWebMvcSecurity 的情况下在 spring security / thymeleaf 中自动生成 csrf 令牌

Spring boot Thymeleaf 配置

Spring Boot Thymeleaf 模板引擎的使用