`

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" 
					class="isis"
					defaultorder="descending" 
					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 class="empty"><td colspan="0">暂无记录</td></tr></tr>
export.banner=<div class="exportlinks">导出选项:{0}</div>
paging.banner.no_items_found=
paging.banner.one_item_found=<span class="pagebanner">共有1条{0}记录</span>
paging.banner.all_items_found=<span class="pagebanner">共有{0}条{1}记录,显示所有{2}记录</span>
paging.banner.some_items_found=<span class="pagebanner">共有{0}条{1}记录,当前显示从第{2}条至第{3}条</span>
paging.banner.full=<span class="pagelinks"> <a href="{1}">首页</a>/<a href="{2}">上一页</a> {0} <a href="{3}">下一页</a>/<a href="{4}">尾页</a> </span>
paging.banner.first=<span class="pagelinks"> 首页/上一页 {0} <a href="{3}">下一页</a>/<a href="{4}">尾页</a> </span>
paging.banner.last=<span class="pagelinks"> <a href="{1}">首页</a>/<a href="{2}">上一页</a> {0} 下一页/尾页 </span>
paging.banner.page.link=<a href="{1}" 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应用结束。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics