1

我有一个使用 freemarker、webwork 和 java 编写的 Web 应用程序。现在,当用户单击“getReport”时,java 代码返回字符串变量(名为“otchet”),其中包含纯文本的整个报告,并显示以下页面:

简单的.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 回答