2012-04-25 56 views
1

我在jsp上有一个链接“导出为CSV”。从Struts2创建和下载CSV

在点击这个链接是我想要做的就是

  • 发送请求采取行动。
  • 操作填充A数据列表
  • 结果被分派给jsp。
  • Jsp迭代数据List并生成输出csv格式。
  • 一个下载文件的弹出窗口与具有名称“myFile.csv”

我想我缺少的东西struts.xml中生成的CSV文件将打开。我试过

<action name="csvAction" class="demo.csvAction"> 
    <result>csvPage.jsp<result> 
</action> 

它运行良好,但下载弹出窗口显示文件名“csvAction.go”。

然后我试图

<action name="csvAction" class="demo.csvAction"> 
    <result type="stream"> 
     <param name="location">csvPage.jsp</param> 
     <param name="contentType">application/csv</param> 
     <param name="contentDisposition">filename="myFile.csv"</param> 
    <result> 
</action> 

但是却忽略了位置属性,在这里期待的输入流。

任何人都可以引导我吗?

回答

0

jsp迭代数据List并生成输出csv格式。

在这种情况下,jsp也应该默认提供文件名给它的动作名称。

第二种方法是您传入inputStream,然后使用此输入流创建CSV(这意味着您从Strut中的datalist准备csv),然后将其作为附件返回。

只是为了信息:如果你创建excel,那么你可以使用jxl或poi。

+0

谢谢。我将头文件“content-Disposition”设置为“attachment; filename = myFile.csv”。但是Jsp还在csv中添加了额外的空间和换行符。我为“”开始和结束标签分开了两行,因此在csv中添加了两个额外的空行。第二种方法在这方面更好。 但现在我打算写一个通用的csv结果类型,就像我们在struts2-json插件中有一个结果类型“json”一样。因为我必须在我的项目中准备大量的CSV。 – 2012-04-26 10:36:22