我正在尝试找到一种通过Spring 3 Portlet提供CSV下载的方法。我有一个方法,它使用@ResourceMapping
注释来定义一个处理程序,它以@ModelAttribute
的形式获取一些报告参数,构建报告并返回它。我遇到的catch-22正在验证从客户端表单发送的参数。
如果我将处理程序设为@ResourceMapping
,我可以设置标题并使用ResourceResponse
写出报告,但我似乎无法弄清楚如何将用户重定向回Portlet视图在输入验证失败时出错。但是,如果我将其设为@ActionMapping
,我可以根据需要检查BindingResult
并将其转发回表单,但ActionResponse
不允许我设置内容-Disposition标头也不写出CSV字节,这对于发回报告至关重要。
我在这里完全失去了,因为我甚至不知道我的选择是什么。甚至可以做我想用Portlet做的事情吗?是否还有其他可以解决的例子?
答案 0 :(得分:0)
我建议您同时使用@ActionMapping
和@ResourceMapping
来满足您的要求。
正如您所说,您可以使用validation
处理@ActionResponse
错误,我会告诉您如何处理Resource Streaming
。
如您所知,每个@ActionResponse
后跟@RenderResponse
,只需返回相同的视图,但此时隐藏iframe
的{{1}}指向src
1}}。
现在ResourceURL
中收到的Request
已经是@ResourceMapping
。因此,您现在可以投放Validated
。
我不知道您的CSV
有多复杂,如果您在应用程序中使用UI
作为jsp
。如果管理得当,views
可以处理Validation
。
谢谢