2012-04-25 113 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