平時我們用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>
由雩都是後台穿過來的,所有分頁頁面可以共用,同時查詢條件不用再辛苦的寫了,同時解決了中文問題