首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

displaytag运用小结

2012-09-01 
displaytag应用小结displaytag 是一个不错的表格标签,可以很方便的取数据放在一个表格里面,支持页面分页使

displaytag应用小结
displaytag 是一个不错的表格标签,可以很方便的取数据放在一个表格里面,支持页面分页
使用总结:
1配置:
导出excel,pdf,xml,cvs文件配置

        <filter-name>ResponseOverrideFilter</filter-name><filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class></filter><filter-mapping>          <filter-name>ResponseOverrideFilter</filter-name>           <url-pattern>*.action</url-pattern></filter-mapping><filter-mapping>         <filter-name>ResponseOverrideFilter</filter-name>         <url-pattern>*.jsp</url-pattern></filter-mapping>

2
Struts2传到页面的是一个List,这时在页面上的标签可用写成:
 <display:table requestURI="/user/index" name="listTablePage" id ="element"export="true" size="resultSize"pagesize="2"partialList="true"><display:caption>人员信息</display:caption><display:column property="userId"  title="userId" sortable="true"/><display:column property="userName"  title="userName" sortable="true"/><display:column property="userPwd"  title="userPwd" sortable="true"/><display:column property="orgId"  title="orgId" sortable="true"/><display:column property="userType"  title="userType" sortable="true"/><display:column property="userReal"  title="userReal" sortable="true"/></display:table>

listTablePage:从Action页面传的List。resultSize是从数据库取得的总数。
3
数据库分页。
displaytag可用支持数据库分页,这样可用处理由于每次取得的是大量数据导致的服务器宕机等问题。
解决办法是在Action页面添加如下内容:
 public String qryList(){int  pageSize = 2 ;   //每页显示的条数resultSize = dataBaseServices.qryTableCount();HttpServletRequest request = ServletActionContext.getRequest(); String pageIndexName = new org.displaytag.util.ParamEncoder("element").encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);   // 页数的参数名        int  pageIndex =  GenericValidator.isBlankOrNull(request.getParameter(pageIndexName))?0:(Integer.parseInt(request.getParameter(pageIndexName))-1);//当前页数        int start =  pageIndex  *  pageSize;        int end = (pageIndex + 1 ) * pageSize;        listTablePage = dataBaseServices.qryTablePage(start, end);        return SUCCESS;}

GenericValidator类导入的是
import org.apache.commons.validator.GenericValidator;
commons-validator中。
element是标签中的Id,通过id取得的是翻页的页数,据此来分页。

4
如果要支持中文分页,必须配置如下:
在classpath里面配置一个displaytag_zh_CN.properties文件。修改里面的内容如下
找到# messages,修改成汉字。
# messages basic.msg.empty_list=暂无记录basic.msg.empty_list_row=<tr title="转到第{0}页">{0}</a>paging.banner.page.separator=,

至于displaytag_zh_CN.properties的内容可以从displaytag\target\classes\org\displaytag\properties里面解压出来重命名即可。

当然,displaytag对中文支持不好是公认的,原因是编码格式不对,可以通过修改源码来解决。
用svn从网上down了个1.2版本的。用maven转换成eclipse可以导入的项目,机子上必须装Maven才行。具体如何装,可以google之。
转换项目:在maven中敲命令进入到displaytag的根目录,执行mvn eclipse:eclipse 执行成功后导入eclipse即可。
修改源码:
找到
private String getProperty(String key)

修改成
private String getProperty(String key)     {         String val = this.properties.getProperty(key);         if (val != null){          try {              val = new String(val.getBytes("ISO8859-1"), "UTF-8");          } catch (UnsupportedEncodingException e) {              throw new RuntimeException("UnsupportedEncodingException occured");          }         }          return val;     }

即可。最后用eclipse打包放到项目中,重启Tomcat即可完美的显示中文!
至此,displaytag应用结束。

热点排行