如何正確使用page—taglib經行正確中文檢索分頁(同時查詢條件任意)

來源:互聯網
上載者:User

平時我們用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> 

由雩都是後台穿過來的,所有分頁頁面可以共用,同時查詢條件不用再辛苦的寫了,同時解決了中文問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.