[Seasar-user:3979] Re: S2JSFでテキストファイルのダウンロード
T.Hattori
[E-MAIL ADDRESS DELETED]
2006年 6月 27日 (火) 22:11:17 JST
hattori です。
なるほど。responseもDIすればよかったのですね。
ありがとうございます。
On Tue, 27 Jun 2006 21:33:19 +0900
<[E-MAIL ADDRESS DELETED]> wrote:
> 米林です。
>
> From: "T.Hattori" <[E-MAIL ADDRESS DELETED]>
> Sent: Tuesday, June 27, 2006 8:16 PM
>
> > こんにちは hattori と申します。
> >
> > S2JSFでテキストファイルのダウンロードをしようと考えているのですが、
> > ダウンロードしたテキストの後ろにHTMLが含まれてしまい悩んでいます。
> >
> > <アクションのメソッド>
> > public String downloadCsvFiel() {
> >
> > ExternalContext context =
> > FacesContext.getCurrentInstance().getExternalContext();
> > HttpServletResponse response = (HttpServletResponse)
> > context.getResponse();
> > response.setContentType("application/octet-stream");
> > response.setHeader("Pragma", "");
> > response.setHeader("Cache-Control", "");
> > response.setHeader("Content-disposition","attachment;
> > filename=test.csv");
> >
> > List list = dataManagerLogic.getDownloadDetails(downloadDetails);
> > try {
> > PrintWriter out = response.getWriter();
> > HogeData hogeData;
> > for (Iterator ite = list.iterator(); ite.hasNext();) {
> > hogeData = (HogeData) ite.next();
> > // CSV生成
> > CSVBuilder builder = CSVBuilder(hogeData);
> > out.println(builder.getCsvLine());
> > }
> > out.close();
> > } catch (IOException e) {
> > e.printStackTrace();
> > }
> > return null;
> > }
>
> 下記のようにしてみてください。
>
> // responseは取りに行かずDIしてもらう
> private HttpServletResponse response;
> public void setResponse(HttpServletResponse response) {
> this.response = response;
> }
>
> アクションのメソッド
> public String hogeAction() {
> response.setContentType("application/octet-stream");
> response.setHeader("Pragma", "");
> response.setHeader("Cache-Control", "");
> response.setHeader("Content-disposition","attachment;
> filename=test.csv");
>
> List list = dataManagerLogic.getDownloadDetails(downloadDetails);
> try {
> PrintWriter out = response.getWriter();
> HogeData hogeData;
> for (Iterator ite = list.iterator(); ite.hasNext();) {
> hogeData = (HogeData) ite.next();
> // CSV生成
> CSVBuilder builder = CSVBuilder(hogeData);
> out.println(builder.getCsvLine());
> }
> out.close();
> } catch (IOException e) {
> e.printStackTrace();
> }
> // これを追加
> FacesContext.getCurrentInstance().responseComplete();
> return null;
> }
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内