平时我们用page—taglib经行分页时,遇到中文分页时老是乱码,有些人说修改它的源码PageTag
final void addParam(String name, String value) {
if (value != null) {name = java.net.URLEncoder.encode(name,"utf-8");
value = java.net.URLEncoder.encode(value,"utf-8");
但是当点击分页时还是乱码,怎么办??
其实到了这里很简单,当你点击下一页是,它用的是get方式提交要转码,所以需要判断
//pagelib bug 当点击下一页查询时,会乱码,所有此处必须转码
if(getRequest().getParameter("pager.offset") != null){
entName = ChineseUtils.toChinese(entName);
System.out.println("--------------entName-----------------entName"+entName);
}
当点击查询时,经行转码。
另外我的分页参数是任意的,我做了个特殊处理
/**
* @author Cooly 2013-7-22
* QueryStringBasesAction.java 统计分析中baseAction
* 统计分析中将请求参数保存,获得基本静态数据信息
* Copyright (c) 2013 by SHUNAN.
* @version 1.0
*/
@SuppressWarnings({"unchecked","serial"})
public class QueryStringBasesAction extends BaseAction {
//将请求参数保存到map中 统计分析中将请求参数保存
protected Map<String, String> queryStringMap = new HashMap<String, String>();
@Override
public void setParameters(Map<String, String[]> map) {
super.setParameters(map);
for(Iterator<String> it = map.keySet().iterator();it.hasNext();){
String key = it.next();
String[] value = map.get(key);
queryStringMap.put(key, value[0]);//统计分析中对每个请求只对应一个值,所以这里只取 value[0]
}
}
}
这是我保存分页时,条件查询的参数,
下面在action继承上面的action,同时放到request里,前台获取
//保留上次请求路径,和参数,同时替换掉entName参数,防止乱码
this.queryStringMap.put("entName", this.entName);
this.getRequest().setAttribute("queryStringMap", this.queryStringMap);
this.getRequest().setAttribute("requestURL ", this.url);
return "success";
下面是我共用分页,
总记录数:${totalcount}
<pg:pager url="${requestURL }" items="${totalcount}" maxPageItems="10" export="currentPageNumber=pageNumber">
<!-- 循环参数列表 -->
<s:iterator value="#request.queryStringMap" >
<pg:param name="${ key}" value="${ value}"/>
</s:iterator>
<pg:first>
<a href="${pageUrl}" id="firstpageurl" >首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl}">前页</a>
</pg:prev>
<pg:pages>
<s:if test="#attr.pageNumber==#attr.currentPageNumber">
<font color="red">${pageNumber }</font>
</s:if>
<s:else><a href="${pageUrl}" >${pageNumber}</a></s:else>
</pg:pages>
<pg:next>
<a href="${pageUrl}" >后页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}" >尾页</a>
</pg:last>
</pg:pager>
由于都是后台穿过来的,所有分页页面可以共用,同时查询条件不用再辛苦的写了,同时解决了中文问题