2009-11-13 57 views
1

我有一個使用freemarker,webwork和java編寫的web應用程序。現在,當用戶點擊「getReport」,java代碼返回一個包含純文本和下頁整個報告顯示字符串變量(名爲「otchet」):FreeMarker,WebWork問題

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; 
    } 
}