1

freemarker、webwork、および Java を使用して記述された Web アプリケーションがあります。ユーザーが「getReport」をクリックすると、Java コードは、レポート全体をプレーン テキストで含む文字列変数 (「otchet」という名前) を返し、次のページが表示されます。

simple.ftl:

<#if (otchet?exists)>
     ${otchet}   
<#else>
    <@ww.text name="report.none"/>
</#if>

正常に動作しています。ただし、代わりに、このレポート (変数「otchet」に含まれる) をテキスト/プレーン ファイルのダウンロードとしてユーザーに提供したいと思います。

どうすればこの問題を解決できますか?

4

1 に答える 1

1

これはまさにStreamResult結果型の目的です。

例:

WebWork XML で:

<result name="download" type="stream">
    <param name="contentDisposition">filename=report.txt</param>
    <param name="contentType">text/plain;charset=UTF-8</param>
    <param name="inputName">inputStream</param>
    <param name="bufferSize">1024</param>
</result>

あなたの行動で:

public InputStream getInputStream() {
    try {
        return new ByteArrayInputStream(getOtchet().getBytes("UTF-8"));
    }
    catch (UnsupportedEncodingException ex) {
        // Shouldn't happen with UTF-8.
        ex.printStackTrace();
    }
}

public String doDownload() {
    if (SUCCESS.equals(execute()) {
        return "download";
    }
    else {
        return ERROR;
    }
}
于 2009-12-26T21:15:21.397 に答える