displaytag应用小结

JAVA 同时被 2 个专栏收录
6 篇文章 0 订阅
3 篇文章 0 订阅
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应用结束。
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

iteye_18745

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值