2013-06-26 32 views
1

我想通过Spring 3 Portlet提供一种提供CSV下载的方法。我有一种方法使用@ResourceMapping注释来定义一个处理程序,它以@ModelAttribute的形式生成一些报告参数,并生成报告并将其返回。我遇到的catch-22正在验证从客户端表单发送来的参数。在Spring 3 portlet中从ResourceMapping重定向回Portlet

如果我使处理程序为@ResourceMapping,我可以设置标题并使用ResourceResponse写出报告,但我似乎无法弄清楚如何将用户重定向到Portlet视图时出现错误输入未通过验证。但是,如果我让一个@ActionMapping,我可以再检查BindingResult S和需要它们转发回的形式,但ActionResponse不允许我设置Content-Disposition头,也没有写出来的CSV字节,这是对发送报告至关重要。

我在这里完全损失,因为我甚至不知道我的选择是什么。是否有可能做我想用Portlet做的事情?是否还有其他示例可供我们研究可能的解决方法?

回答

0

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

正如你说你能使用@ActionResponse,我会告诉你如何处理Resource Streaming处理validation错误。

正如你所知道的每@ActionResponse后跟@RenderResponse,只返回了同样的观点,但是,有一个隐藏的iframe此时其src指向ResourceURL

现在Request您在@ResourceMapping收到的东西已经是Validated。所以,你现在可以为你的CSV服务。

我不知道你的UI有多复杂,如果你在你的应用程序中使用jsp作为views。如果管理得好,Validation可以通过@ResourceMapping来处理。

谢谢

+0

我给你点头,因为这是一个很好的解决方案。但是,我选择了使用AJAX调用进行验证的不同路由,然后在验证输入时再次调用AJAX来获取CSV。但是,iframe是我没有想到的一个想法。 – CodeChimp