WebWork实现数据导出CSV文本
创始人
2024-04-16 20:01:38
0

以往,在WebWork中实现导出CSV文本时,采用的是之前自己实现的csv result,但是这个实现有个缺陷就是对象嵌套不支持,而且需要构造dto遍历获取列表进行列表字段显示的封装,且在WebWork配置文件要罗列出需要导出的字段,过于繁琐。

于是产生了采用直接用freemarker作为导出CSV文本文件模板的想法,这样后台只做查询列表数据的获取,WebWork配置文件只需要定位到指定freemarker模板,而且导出排版可以在freemarker中更灵活的得到控制。

其中,WebWork在导出CSV文本过程中,中文乱码问题上尤其需要注意的是,一定要设置模板文件的编码。

以下是实现实例:

  1. 1 public String sampelExport()throws Exception{  
  2. 2     samplelist = SampleService.getAll();  
  3. 3     return SUCCESS;  
  4. 4}  

//samplelist的getter不要忘记哦。

SampleObject具有name属性,类型为String,createDate属性,类型为java.util.date,emails属性,类型为java.util.list,为一个email封装对象列表,status属性,类型为Enum,提供按locale获取显示内容方法。

  1. 1 〈action name="sampleexport" method="sampleExport" 
  2. 2      class="org.hook.webwork.SampleExportAction"〉  
  3. 3      〈result type="freemarker" name="success"〉  
  4. 4          template/default/sampleexport.ftl  
  5. 5      〈result〉  
  6. 6 〈/action〉  
  1. 1 〈#ftl encoding="GBK"〉   
  2. 2 〈#if response?exists〉${response.setHeader  
  3. ("Content-Disposition","attachment;   
  4. filename=sample_export.csv")}${response.setHeader  
  5. ("Cache-  Control", "cache")}${response.setContentType  
  6. ("text/plain; charset=GBK")}${action.getText  
  7. ('org.hook.sampleobject.name')},  
  8. ${action.getText('org.hook.sampleobject.createdate')},  
  9. ${action.getText('org.hook.sampleobject.emails')},  
  10. ${action.getText('org.hook.sampleobject.status')}〈/#if〉  
  11. 3 〈#if samplelist?exists〉  
  12. 4 〈#list samplelist as sampleobject〉"${sampleobject.name}",  
  13. "${sampleobject.createDate?date}",  
  14. "〈#list sampleobject.emailss as email〉${email.fullinfo}   
  15. 〈/#list〉",  
  16. 〈#if sampleobject.status?exists&&sampleobject.status.  
  17. getValue(locale)?exists〉  
  18. ${sampleobject.status.getValue(locale)}〈/#if〉  
  19. 5 〈/#list〉  
  20. 6 〈/#if〉  

【编辑推荐】

  1. Webwork配置详解
  2. 用WebWork注册页面建立过程
  3. WebWork注入Servlet方法详解
  4. WebWork中返回INPUT的原因
  5. WebWork如何实现文件上传配置过程

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...