jfinal 分頁

網上都沒有關於jfinal的通用分頁 今天寫完,共享一下css

直接上代碼java

第一步:JspRender.setSupportActiveRecord(false); 設置jsp支不支持mysql

           否則提示HashMap轉Page失敗web

第二步:新建PageTag類,以下sql

public class PageTag extends TagSupport {

	private String data = "pageList";// 數據集合名字
	private String href; // 鏈接地址
	private StringBuffer output; // 頁面輸出

	public String getData() {
		return data;
	}

	public void setData(String data) {
		this.data = data;
	}

	public String getHref() {
		return href;
	}

	public void setHref(String href) {
		this.href = href;
	}

	public StringBuffer getOutput() {
		return output;
	}

	public void setOutput(StringBuffer output) {
		this.output = output;
	}

	@Override
	public int doEndTag() throws JspException {
		return super.doEndTag();
	}

	@Override
	public int doStartTag() throws JspException {
		 try {
             output = new StringBuffer();
             hander();
             this.pageContext.getOut().write(output.toString());
			 } catch (IOException e) {
			             e.printStackTrace();
		      }
	  return SKIP_BODY;
	}
	private void hander() {
		// 若是URL不包含? 則添加?
		if (href.indexOf("?") < 0) {
			href += "?";
		}
		if (href.endsWith("?") || href.endsWith("&amp;")) {
			href += "pageIndex=";
		} else {
			href += "&amp;pageIndex=";
		}
		Page pageList = (Page) this.pageContext.getRequest().getAttribute(data);
		if (pageList != null) {
			StringBuffer page = new StringBuffer();
			int pageNumber=pageList.getPageNumber();
			int totalPage=pageList.getTotalPage();
			int totalRow=pageList.getTotalRow();
			int startPage = pageNumber-4;
			int endPage =  pageNumber+4;
			
			if(totalRow==0){
				pageNumber=0;
			}
			
			if(startPage<1){
				startPage=1;
			}
			
			if(endPage>totalPage){
				endPage=totalPage;
			}
			
			if(pageNumber<=8){
				startPage=1;
			}
			if(totalPage-pageNumber<8){
				endPage=totalPage;
			}
			
			page.append("<div class=\"sabrosus \">")
			    .append("&nbsp;&nbsp;&nbsp;");
			
			if(pageNumber<=1){
				page.append("<span>上一頁</span>&nbsp;&nbsp;");
			}
			if(pageNumber>1){
				page.append("<a href=\""+href+(pageNumber-1)+" \">上一頁</a>");
			}
			if(pageNumber>8){
				page.append("<a href=\""+href+"1 \">1</a>")
					.append("<a href=\""+href+"2 \">2</a>")
					.append("...");
			}
			
			for(int i=startPage;i<=endPage;i++){
				if(pageNumber==i){
					page.append("<span class=\"current\">"+i+"</span>");
				}else{
					page.append("<a href=\""+href+i+" \">"+i+"</a>");
				}
			}
			if(totalPage-pageNumber>=8){
				page.append("...")
					.append("<a href=\""+href+(totalPage-1)+" \">"+(totalPage-1)+"</a>")
					.append("<a href=\""+href+(totalPage)+" \">"+(totalPage)+"</a>");
			}
			
			if(pageNumber==totalPage){
				page.append("<span>下一頁</span>");
			}else{
				page.append("<a href=\""+href+(pageNumber+1)+" \">下一頁</a>");
				     
			}
			page.append("&nbsp;&nbsp; ");
			page.append("</div>");
			output.append(page);
		}
	}

}


第三步:編寫一個PageBean,這樣子其它框架也能用,我這個是mysql的bootstrap

public class PageBean {
	int start;
	int limit;
	String dir;
	String sort;
	public int getStart() {
		return start;
	}
	public void setStart(int start) {
		this.start = start;
	}
	public int getLimit() {
		return limit;
	}
	public void setLimit(int limit) {
		this.limit = limit;
	}
	public String getDir() {
		return dir;
	}
	public void setDir(String dir) {
		this.dir = dir;
	}
	public String getSort() {
		return sort;
	}
	public void setSort(String sort) {
		this.sort = sort;
	}

}



第四步:方法獲取pagebean的,在action能調用app

public PageBean getPageBean() {
		PageBean pageBean = new PageBean();
		int start=1;
		int limit=10;
		if(getPara("pageIndex")!=null){
			start=getParaToInt("pageIndex");
		}
		String sort = getPara("sortField");
		String dir = getPara("sortOrder");
		pageBean.setDir(dir);
		pageBean.setLimit(limit);
		pageBean.setSort(sort);
		pageBean.setStart(start);
		return pageBean;
	}



第五步:下面是我用jfinal的分頁獲取方法框架

public Page getPageList(String[] search, PageBean pageBean) {
		StringBuilder sql = new StringBuilder("select * ");
		StringBuilder sqlFrom = new StringBuilder("from DB_CONFIG_INFO t where 1=1");
		sqlFrom.append(PageUtil.getSearch(search));
		sqlFrom.append(PageUtil.getOrder(pageBean));
		Page paginate = paginate(pageBean.getStart(), pageBean.getLimit(), sql.toString(), sqlFrom.toString());
		return paginate;
	}



第六配置文件:web.xmljsp

<jsp-config>
    <taglib>
      <taglib-uri>http://www.tag.mytag.com</taglib-uri>
      <taglib-location>/WEB-INF/tld/page_tag.tld</taglib-location>
    </taglib>
  </jsp-config>



第七:web-inf下建個lib ,裏面新建個tld文件 ,一個參數是href,一個是 data,就是page放在request裏面的nameide

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="1.2" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
	 <description>page tag 1.0</description>
	<display-name>tag lib</display-name>
	<tlib-version>1.0</tlib-version>
	<short-name>taglib</short-name>
	<uri>/WEB-INF/tld/page_tag.tld</uri>
	<!-- 分頁  -->
	<tag>
		<name>page</name>
		<tag-class>platform.ext.taglib.PageTag</tag-class>
		<body-content>JSP</body-content>
		<attribute>
			<name>href</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>data</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
		</attribute>
	</tag>
</taglib>



第八步:jsp頁面中

<%@ taglib uri="http://www.tag.mytag.com" prefix="page"  %>



頁面中如何使用:默認把頁面的搜索條件加上,最後會自動補的,若是沒有參數則補?pageIndex=1,有,則補&pageIndex=1,pageList是request中設置的Page

<page:page href="${contextpath }/dbconfiginfo?username=${username }&pwd=${pwd }" data="pageList" />

第九步:關於分頁樣式,我用的是bootstrap自帶的,你們也能去找一下網上通用的,把代碼中的那個div樣式什麼的改一下就好了,我用的樣式地址是: http://www.woaicss.com/article/artical/css55.htm,這邊有24種,你們下下來,就好了,官網我也不知道,今天臨時找的

public class PageUtil {

public static String getSearch(String[] search) {

StringBuilder sdb = new StringBuilder();

if (search != null && search.length > 0) {

for (String str : search) {

sdb.append(str);

}

}

return sdb.toString();

}


public static String getOrder(PageBean pageBean) {

if (pageBean == null || StringKit.isBlank(pageBean.getSort()) || StringKit.isBlank(pageBean.getDir()))

return "";

StringBuilder sdb = new StringBuilder();

sdb.append(" order by ").append(pageBean.getSort()).append(" ").append(pageBean.getDir());

return sdb.toString();

}

}

相關文章
相關標籤/搜索