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应用结束。