FreeMarker,WebWork 问题

Posted

技术标签:

【中文标题】FreeMarker,WebWork 问题【英文标题】:FreeMarker, WebWork Problem 【发布时间】:2010-12-16 05:49:50 【问题描述】:

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

simple.ftl:

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

一切正常。但是,我想以文本/纯文件下载的形式向用户提供此报告(包含在变量“otchet”中)。

我该如何解决这个问题?

【问题讨论】:

【参考方案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;
    

【讨论】:

以上是关于FreeMarker,WebWork 问题的主要内容,如果未能解决你的问题,请参考以下文章

.ftl文件 是啥文件

大数据学习总结记录—页面静态化技术(Freemarker/velocity)& 网站伪静态(UrlRewriteFilter)

Free 基础概念

无法正确解析FreeMarker视图

Struts2 + Freemarker + DisplayTag:如何使其工作

开源代码生成器,基于mybatis-generator扩展,结合freemarker