2011-12-28 124 views
0

在我的应用程序中,用户可以选择仅以xls下载。现在我们正在使用apache poi修改它。早期的Struts标签是针对不同流类型的不同流 - struts2

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

我想,如果用户在对话框中不同的流用于和XLSX XLS选择使用不同的流。

在此先感谢

+0

请不要在你的帖子上签名。有关更多信息,请参阅http://stackoverflow.com/faq#signatures。 – Amy 2011-12-28 11:31:48

回答

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> 

,你可以根据结果字符串多个结果类型配置它们从动作类返回 否则你可以设置流等参数在动作类中的值,并且可以使用动态值Sin你的结果配置像

<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可以在里面行动设定基于用户输入的值,这会给你更多的灵活性。

+0

感谢umesh,但是一旦行动向浏览器发送结果,那么只有用户可以选择基于哪个文件类型来决定我要发送哪个流,有没有办法做到这一点。 – user930412 2011-12-29 05:34:04

+0

@ user930412即使用户选择文件类型,我假设您需要某种处理方式或者您希望在客户端完成所有操作。在我看来这并不是好的方法 – 2011-12-29 05:43:09

+0

是的,但文件选择选项只有在动作发送给浏览器后才会出现,现在之后就没有编程能力了。不是吗? – user930412 2011-12-29 08:02:00