不同流类型的不同流 - struts2

时间:2011-12-28 08:47:44

标签: struts2

在我的应用程序中,用户可以选择仅在xls中下载。现在我们正在使用apache poi修改它。早期的struts标签是

<class="com.msl.mo.exporttoexcel.ExportToExcel">
    <result name="success" type="stream">
        <param name="inputName">fileStream</param>
        <paramname="contentType">application/vnd.mexcel</param>

        <param name="contentDisposition">filename="WOlist.xlsx"</param>
        <param name="bufferSize">4096</param>
    </result> 

我希望如果用户在对话框中选择xls,则使用不同的流,而对于xlsx,则使用不同的流。

提前致谢

1 个答案:

答案 0 :(得分:0)

你有不同的方法来实现这一目标。

创建不同的结果类型并在struts xml文件中配置它们,如

 <result name="xls" type="stream">
             <param name="inputName">fileStream</param>
            <paramname="contentType">application/vnd.xls</param>
            <param name="contentDisposition">filename="WOlist.xls"</param>
            <param name="bufferSize">4096</param>
 </result>

 <result name="xlsx" type="stream">
             <param name="inputName">fileStream</param>
            <paramname="contentType">application/vnd.mexcel</param>
            <param name="contentDisposition">filename="WOlist.xlsx"</param>
            <param name="bufferSize">4096</param>
 </result>

并且您可以根据从操作类返回的结果字符串为更多结果类型配置它们 否则你可以在你的动作类中设置流和其他参数的值,并且可以使用动态值来结束你的结果配置,如

<result name="success" type="stream">
             <param name="inputName">${fileStream}</param>
            <paramname="contentType">${contentType}</param>
            <param name="contentDisposition">${filename}</param>
            <param name="bufferSize">${bufferSize}</param>
 </result>

其中所有这些参数fileStream,contentType,filename,bufferSize都可以根据用户输入的值在Action类中设置,这将为您提供更大的灵活性。