📄 pageparametermaker.java
字号:
package com.ztes.commons.dbo.pagination;
import java.util.Map;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
/**
* 获取request传递的一些参数,从而构造分页所需的参数。
* 当构造该实例时,程序自动获取当前页码、每页显示记录两个参数值,
* 以及请求页面的URI,如果翻页链接需要传递参数,请使用{@link #putParameter(String, String)}}
* 和{@link #putParameter(String, String[])}设置。
*
* @author tiannet(曾次清)
*/
public class PageParameterMaker extends PageParameterSimple implements PageParameter {
/**
* 请求页面的URI
*/
private String URI;
/**
* 参数名称与值的对应关系。
*/
private Map parameterMap = new HashMap();
/**
* 指定HttpServletRequest对象构造实例,
* 构造函数会根据HttpServletRequest获取当前页面的URI,页码、页尺寸等参数。
* @param request HttpServletRequest对象。
*/
public PageParameterMaker(HttpServletRequest request) {
setRequest( request );
}
/**
* 获取request中传递的当前页码,前提是使用默认的参数名(即PageInfo.PNAME_CURRENT_PAGENO)。
* @param request 持有当前页码参数的HttpServletRequest对象。
* @return request中传递的当前页码,如果不存在则返回1。
*/
public static int getCurrentPageNo(HttpServletRequest request) {
String no = request.getParameter(PageInfo.PNAME_CURRENT_PAGENO);
if( no != null && !no.trim().equals("") ) {
return Integer.parseInt(no.trim());
} else {
return 1;
}
}
/**
* 获取request中传递的页尺寸,前提是使用默认的参数名(即PageInfo.PNAME_PAGESIZE)。
* @param request 持有页尺寸参数的HttpServletRequest对象。
* @return request中传递的页尺寸,如果不存在则返回默认值。
*/
public static int getPageSize(HttpServletRequest request) {
String size = request.getParameter(PageInfo.PNAME_PAGESIZE);
if( size != null && !size.trim().equals("") ) {
return Integer.parseInt(size.trim());
} else {
return PageConfig.DEFAULT_PAGESIZE;
}
}
/**
* 返回请求页面的URI。
* @return 请求页面的URI。
*/
public String getURI() {
return URI;
}
/**
* 设置请求页面的URI
* @param uri 请求页面的URI.
*/
public void setURI(String uri) {
URI = uri;
}
/**
* 设置一个url传递的参数名称与值的对应关系。
* @param name 参数名称。
* @param value 参数值。
*/
public void putParameter(String name, String value) {
putParameter(name, new String[]{value});
}
/**
* 设置一个url传递的参数名称与值的对应关系。
* @param name 参数名称。
* @param value 参数值。
*/
@SuppressWarnings("unchecked")
public void putParameter(String name, String[] value) {
parameterMap.put(name, value);
}
/**
* 返回参数名与值的对应关系。
* @return 参数名与值的对应关系。
*/
public Map getParameterMap() {
return parameterMap;
}
/**
* 设置参数名与值的对应关系
* @param parameterMap 参数名与值的对应关系.
*/
public void setParameterMap(Map parameterMap) {
this.parameterMap = parameterMap;
}
/**
* 设置HttpServletRequest,同时获取请求页面URI及页码、页尺寸。
* @param request HttpServletRequest.
*/
private void setRequest(HttpServletRequest request) {
setURI("");
//setURI( request.getRequestURI() );
String size = request.getParameter(PageInfo.PNAME_PAGESIZE);
if( size != null && !size.trim().equals("") ) {
setPageSize( Integer.parseInt(size) );
}
String no = request.getParameter(PageInfo.PNAME_CURRENT_PAGENO);
if( no != null && !no.trim().equals("")) {
setCurrentPageNo( Integer.parseInt(no) );
}
}
/**
* 获取翻页地址,
* 它型如:index.jsp?id=1&curretPageNo={0}&pageSize={1}。
* 也可能是一个Javascript函数,它包含两个占位符,型如:javascript:goto({0},{1});
* 在点击翻页链接时,执行指定的脚本函数,并且两个占位符分别被当前页码和页尺寸大小替代。
*
* @return 翻页链接地址。
*/
@SuppressWarnings("unchecked")
public String getPageUrl() {
String pageUrl = super.getPageUrl();
//如果已设置了pageUrl,则直接返回。
if( pageUrl != null ) {
return pageUrl;
}
StringBuffer sb = new StringBuffer( getURI() );
sb.append("?" + PageInfo.PNAME_CURRENT_PAGENO + "={0}");
sb.append("&" + PageInfo.PNAME_PAGESIZE + "={1}");
String[] keys = new String[parameterMap.keySet().size()];
parameterMap.keySet().toArray(keys);
for( int i = 0;i < keys.length;i ++ ) {
String[] a = (String[])parameterMap.get(keys[i]);
for( int j = 0;j < a.length;j ++ ) {
sb.append("&" + keys[i] + "=" + a[j]);
}
}
pageUrl = sb.toString();
//在父类中设置地址,以便下次获取时不用重新构造
super.setPageUrl(pageUrl);
return pageUrl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -