現在上記タグの技術やOrangeSignalを使ってCSVファイルダウンロード機能を実装しようとしています。
CsvEntityListHandlerを使って実装しているのですが、
CSV出力されている気配がありません。
コンソールには何も出力されておらず、エラーログも出ていません。
ちなみに以下リンクを参考にしました。
http://okwave.jp/qa/q8048832.html
CSV出力できない原因を調べていますが、なかなか解決には至りません。
もし何かアドバイスいただける方がいましたらよろしくお願い致します。
実際のコードは以下です。
○Entity
Java
1package jp.co.test; 2 3import com.orangesignal.csv.annotation.CsvColumn; 4import com.orangesignal.csv.annotation.CsvEntity; 5 6@CsvEntity(header = false) 7public class TestBean { 8 @CsvColumn(position = 0) 9 int id; 10 @CsvColumn(position = 1) 11 String name; 12 13 public TestBean(int id, String name) { 14 this.name = name; 15 this.id = id; 16 } 17}
○Controller
java
1package jp.co.test; 2 3import java.io.File; 4import java.io.IOException; 5import java.io.PrintWriter; 6import java.util.ArrayList; 7import java.util.List; 8 9import javax.servlet.http.HttpServletResponse; 10 11import org.springframework.stereotype.Controller; 12import org.springframework.web.bind.annotation.RequestMapping; 13 14import com.orangesignal.csv.CsvWriter; 15import com.orangesignal.csv.handlers.CsvEntityListHandler; 16 17@Controller 18public class OrangeSignalCsv { 19 20 @RequestMapping("/orangeSignal/csvDown") 21 public void csvDown(HttpServletResponse response) throws IOException { 22 23 CsvWriter writer = new CsvWriter(new PrintWriter(new File("test.csv"))); 24 CsvEntityListHandler<TestBean> handler = new CsvEntityListHandler<TestBean>( 25 TestBean.class); 26 List<TestBean> list = new ArrayList<TestBean>(); 27 list.add(new TestBean(1, "A")); 28 list.add(new TestBean(2, "B")); 29 list.add(new TestBean(3, "C")); 30 handler.save(list, writer); 31 writer.close(); 32 33 } 34} 35
[DLできるようになったコード]
java
1package jp.co.test; 2 3import java.io.File; 4import java.io.IOException; 5import java.io.PrintWriter; 6import java.net.URLEncoder; 7import java.nio.charset.StandardCharsets; 8import java.nio.file.Files; 9import java.util.ArrayList; 10import java.util.List; 11 12import javax.servlet.http.HttpServletResponse; 13 14import org.springframework.stereotype.Controller; 15import org.springframework.web.bind.annotation.RequestMapping; 16 17import com.orangesignal.csv.CsvWriter; 18import com.orangesignal.csv.handlers.CsvEntityListHandler; 19 20@Controller 21public class OrangeSignalCsv { 22 23 @RequestMapping("/orangeSignal/csvDown") 24 public void csvDown(HttpServletResponse response) throws IOException { 25 26 File file = new File("test.csv"); 27// System.out.println("CSV file: " + file.getAbsolutePath()); // DLしない場合の保存先を出力 28 response.addHeader("Content-Disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(file.getName(), StandardCharsets.UTF_8.name())); 29 Files.copy(file.toPath(), response.getOutputStream()); 30 31 CsvWriter writer = new CsvWriter(new PrintWriter(file)); 32 CsvEntityListHandler<TestBean> handler = new CsvEntityListHandler<TestBean>( 33 TestBean.class); 34 List<TestBean> list = new ArrayList<TestBean>(); 35 list.add(new TestBean(1, "A")); 36 list.add(new TestBean(2, "B")); 37 list.add(new TestBean(3, "C")); 38 handler.save(list, writer); 39 writer.close(); 40 41 } 42} 43
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/16 16:50
2016/07/17 00:09
2016/07/17 00:34 編集