2009-09-04 7 views
2

SpringMVCカスタムビューを取得してbroswerでファイルをダウンロードする方法はありますか?私はorg.springframework.web.servlet.Viewからrenderメソッドを実装しましたが、ダウンロードアクションを開始する代わりに、データがページに書き込まれるという結果になりました。spring-mvc download action

try { 

    Document oDoc = (Document) model.get("oDoc"); 
    out = new PrintWriter(response.getOutputStream()); 

    response.setContentType("application/vnd.ms-excel"); 
    response.setHeader("content-disposition", "attachment; filename=file.xls"); 

    GenerateXLSFile gof = new GenerateXLSFile(); 

    gof.outputTSVFromDom(out, oDoc); 

} catch block here { 

    //writes to log here 

} finally { 

    if (out != null) { 
     out.flush(); 
     out.close(); 
    } 

} 

私は、レンダリングメソッドがサーバーログから呼び出されていることを知っています。私はGenerateXLSFileがサーバーログから作成されていることを知っています。私はoutputTSVFromDomがドキュメントを受け取り、それを私のJUnitテストから変換できることを知っています。また、サーバーログに書き込んで完了します。データはブラウザで終了します。ファイアウォールによれば、HTTPヘッダーは正常に見えます。サーバーログにcatchブロックのエラーはありません。

私はここで何が欠けていますか?

+0

に基づいてあなたといじるみましたコンテンツタイプは、アプリケーション/オクテットストリームのように、それを何か他のものに変更すると(ダウンロード可能である必要があります)、何が起こるかを確認します。 – Jherico

+0

'out = response.getWriter(); 'を試してください。 – serg

答えて

5

最初に、どのAPIを使用していますか? Excelドキュメントはバイナリなので、WriterではなくOutputStreamを使用してください。

第二に、春には、Excel文書を提供するためのサポートが組み込まれています:

Apache POI API
  • AbstractJExcelViewに基づいて
  • +0

    古いタブ値のコードを保存するよりも、AbstractExcelViewを使う方が簡単です。 – sal