[Wicket-ja-user 560] 動的に作ったPDFを表示させたい

アーカイブの一覧に戻る

you yamamoto youy7****@gmail*****
2011年 8月 25日 (木) 14:29:29 JST


はじめまして。山本と申します。

動的に作ったPDFをダウンロードではなく、表示させたいのですが、
なかなかうまくいかないので、質問させてください。

ここのメーリングリストの過去の投稿を参考にして、
以下のようにつくってみたら、PDFを表示することはできたのですが、
なんか例外が発生してしまっているので、困っています。
例外を回避する方法をご存知な方がいらっしゃればおしえてください。
また、以下の方法よりもいい方法があれば、ご教授くださればとおもいます。

Page.html抜粋
------------------------------------

<input type="submit" wicket:id="printLink" value="PDF" />

------------------------------------

 Page.java抜粋(コンストラクタの部分)
 ------------------------------------

Button printLink = new Button("printLink"){
private static final long serialVersionUID = 1L;
    @Override
    public void onSubmit() {
        //動的に作ったPDFがaiueo.pdfというファイル名だとします。
        IResourceStream stream = new FileResourceStream(new
File("aiueo.pdf"));
        // responseを取得
        WebResponse response = (WebResponse) getResponse();
        // ヘッダー設定
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline");
        // responseのOutputStreamにPDFのStreamをセット
        try {
            OutputStream os = response.getOutputStream();
            InputStream in =  stream.getInputStream();
            int iData = 0;
            while ((iData = in.read()) != -1) {
                os.write(iData);
            }
            os.close();
            in.close();
        }catch (Exception e) {
            throw new RuntimeException(e);
        }
        //responseをセット
        setHeaders(response);
    }
};
form1.add(printLink);
this.add(form1);

 ------------------------------------

発生する例外
 ------------------------------------
 org.apache.wicket.protocol.http.WebResponse redirect
致命的: Unable to redirect to: ?wicket:interface=:6::::, HTTP Response has
already been committed.
org.apache.wicket.protocol.http.WicketFilter doGet
致命的: closing the buffer error
java.lang.IllegalStateException
 at
org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:473)
 at
org.apache.wicket.protocol.http.WebResponse.sendRedirect(WebResponse.java:299)
 at
org.apache.wicket.protocol.http.WebResponse.redirect(WebResponse.java:250)
 at
org.apache.wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:67)
------------------------------------

環境
------------------------------------
tomcat7
JDK 1.6
Wicket 1.4.18
------------------------------------

以上、よろしくお願いします。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
ダウンロード 



Wicket-ja-user メーリングリストの案内
アーカイブの一覧に戻る