1

我正在尝试找出一种通过 Spring 3 Portlet 提供 CSV 下载的方法。我有一个方法,它使用@ResourceMapping注释来定义一个处理程序,该处理程序以 a 的形式获取一些报告参数@ModelAttribute,构建报告并返回它。我遇到的 catch-22 正在验证从客户端表单发送的参数。

如果我使处理程序 a @ResourceMapping,我可以设置标题并使用 写出报告ResourceResponse,但我似乎无法弄清楚当用户的输入验证失败时如何将用户重定向回出现错误的 Portlet 视图。但是,如果我将其设为@ActionMapping,然后我可以检查BindingResults 并根据需要将它们转发回表单,但ActionResponse不允许我设置 Content-Disposition 标头或写出 CSV 字节,这有点关键用于发回报告。

我在这里完全不知所措,因为我什至不知道我的选择是什么。甚至可以用 Portlet 做我想做的事情吗?还有其他示例我可以查看可能的解决方法吗?

4

1 回答 1

0

我建议您同时使用@ActionMapping@ResourceMapping满足您的要求。

正如您所说,您能够使用 处理validation错误@ActionResponse,我将告诉您如何处理Resource Streaming.

如您所知,每个后面都@ActionResponse跟着 a @RenderResponse,只需返回相同的视图,但是iframe这次隐藏的asrc指向ResourceURL

现在Request你收到的@ResourceMapping是已经存在的东西Validated。因此,您现在可以为您的CSV.

我不知道您的复杂程度UI以及您是否在应用程序中使用jspas 。views如果管理得当,Validation可以由@ResourceMapping.

谢谢

于 2013-06-26T19:26:31.113 回答