[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 メーリングリストの案内