Java/SSH分页组件

转自:http://wilr.iteye.com/blog/1441536


由于项目中分页风格多样化,而分页又是项目中必不可少的,为统一项目分页风格,在上次封装的分页的组件找不到的的情况下,重新封装了一下分页组件,特意分享给大家,也防止再次丢失!

   1.分页html/CSS代码及素材准备

     请参考我的博客《div+css分页条》

         http://wilr.iteye.com/blog/1208045

    2.分页组件实体bean类

Java代码   收藏代码
  1. package wilr.utils.paging.domain;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5. /** 
  6.  * @project paging 
  7.  * @path wilr.utils.paging.domain 
  8.  * @desc SSH版通用分页标签 
  9.  * @author Wilr  
  10.  * @QQ:545881075 
  11.  * @time 2012-2-28 上午12:01:18 
  12.  */  
  13. public class Page implements Serializable {  
  14.   
  15.     private static final long serialVersionUID = 1L;  
  16.     /** 
  17.      * 每页显示条数 默认显示10条 
  18.      */  
  19.     private Integer pageSize = 10;  
  20.     /** 
  21.      * 总条数 
  22.      */  
  23.     private Integer totalCount = 0;  
  24.     /** 
  25.      * 总页数 
  26.      */  
  27.     private Integer totalPage = 0;  
  28.     /** 
  29.      * 当前页 
  30.      */  
  31.     private Integer currentPage = 1;  
  32.     /** 
  33.      * 起始索引 
  34.      */  
  35.     private Integer startIndex = 0;  
  36.     /** 
  37.      * 分页条件 
  38.      */  
  39.     private String condition;  
  40.     /** 
  41.      * 查询的返回值 
  42.      */  
  43.     private List<?> objList;  
  44.     /** 
  45.      * 排序 
  46.      */  
  47.     private String orderBy;  
  48.     /** 
  49.      * 查询对象名称或表名/或查询语句 
  50.      */  
  51.     private String objName;  
  52.     /** 
  53.      * 需要查询的字段 
  54.      */  
  55.     private String queryField;  
  56.       
  57.     public Page(Integer totalCount,List<?> objList, Integer currentPage) {  
  58.         super();  
  59.         this.totalCount = totalCount;  
  60.         this.objList = objList;  
  61.         this.currentPage = currentPage;  
  62.     }  
  63.   
  64.     public Page(Integer pageSize, String condition, List<?> objList,  
  65.             String orderBy, String objName) {  
  66.         super();  
  67.         this.pageSize = pageSize;  
  68.         this.condition = condition;  
  69.         this.objList = objList;  
  70.         this.orderBy = orderBy;  
  71.         this.objName = objName;  
  72.     }  
  73.   
  74.     public Page(Integer pageSize, String objName) {  
  75.         super();  
  76.         this.pageSize = pageSize;  
  77.         this.objName = objName;  
  78.     }  
  79.     public Page(){}  
  80.   
  81.   
  82.     public Integer getPageSize() {  
  83.         return pageSize;  
  84.     }  
  85.   
  86.     public void setPageSize(Integer pageSize) {  
  87.         this.pageSize = pageSize;  
  88.     }  
  89.   
  90.     public Integer getTotalCount() {  
  91.         return totalCount;  
  92.     }  
  93.   
  94.     public void setTotalCount(Integer totalCount) {  
  95.         this.totalCount = totalCount;  
  96.     }  
  97.     public Integer getTotalPage() {  
  98.         totalPage=totalCount % pageSize == 0 ? (totalCount / pageSize): (totalCount / pageSize + 1);  
  99.         return totalPage;  
  100.     }  
  101.   
  102.     public void setTotalPage(Integer totalPage) {  
  103.         this.totalPage = totalPage;  
  104.     }  
  105.   
  106.     public Integer getCurrentPage() {  
  107.         return currentPage;  
  108.     }  
  109.   
  110.     public void setCurrentPage(Integer currentPage) {  
  111.         if (currentPage <= 0)  
  112.             currentPage = 1;  
  113.         this.currentPage = currentPage;  
  114.     }  
  115.   
  116.     public Integer getStartIndex() {  
  117.         startIndex=this.pageSize * (this.currentPage - 1);  
  118.         return startIndex;  
  119.     }  
  120.   
  121.     public void setStartIndex(Integer startIndex) {  
  122.         this.startIndex =startIndex;  
  123.     }  
  124.   
  125.     public String getCondition() {  
  126.         return condition;  
  127.     }  
  128.   
  129.     public void setCondition(String condition) {  
  130.         this.condition = condition;  
  131.     }  
  132.   
  133.     public List<?> getObjList() {  
  134.         return objList;  
  135.     }  
  136.   
  137.     public void setObjList(List<?> objList) {  
  138.         this.objList = objList;  
  139.     }  
  140.   
  141.     public String getOrderBy() {  
  142.         return orderBy;  
  143.     }  
  144.   
  145.     public void setOrderBy(String orderBy) {  
  146.         this.orderBy = orderBy;  
  147.     }  
  148.   
  149.     public String getObjName() {  
  150.         return objName;  
  151.     }  
  152.   
  153.     public void setObjName(String objName) {  
  154.         this.objName = objName;  
  155.     }  
  156.     public String getQueryField() {  
  157.         return queryField;  
  158.     }  
  159.   
  160.     public void setQueryField(String queryField) {  
  161.         this.queryField = queryField;  
  162.     }  
  163. }  
  

   3.标签实现类

 

 

Java代码   收藏代码
  1. package wilr.utils.paging.taglib;  
  2.   
  3. import java.io.Serializable;  
  4. import javax.servlet.jsp.JspException;  
  5. import javax.servlet.jsp.tagext.TagSupport;  
  6.   
  7. import wilr.utils.paging.domain.Page;  
  8.   
  9. /** 
  10.  * @project paging 
  11.  * @path wilr.utils.paging.taglib 
  12.  * @desc 分页标签 
  13.  * @author Wilr 
  14.  * @QQ:545881075 
  15.  * @time 2012-2-28 上午12:02:21 
  16.  */  
  17. public class PagingTag extends TagSupport implements Serializable {  
  18.     private static final long serialVersionUID = 1L;  
  19.   
  20.     /** 
  21.      * 是否显示改变页数下拉框 
  22.      */  
  23.     private boolean skipCount = true;  
  24.     /** 
  25.      * 是否显示跳页输入框 
  26.      */  
  27.     private boolean jumpText = true;  
  28.     /** 
  29.      * 是否显示上/下一页按钮 
  30.      */  
  31.     private boolean prevPage = true;  
  32.     /** 
  33.      * 是否显示首/尾页按钮 
  34.      */  
  35.     private boolean startPage = true;  
  36.     /** 
  37.      * 是否显示遍历页 
  38.      */  
  39.     private boolean forPage = true;  
  40.     /** 
  41.      * 是否显示当前页和总页数 
  42.      */  
  43.     private boolean showCurAndSum = true;  
  44.     /** 
  45.      * 是否启用刷新 
  46.      */  
  47.     private boolean refresh=true;  
  48.     /** 
  49.      * 分页实体对象 
  50.      */  
  51.     private Page page;  
  52.     /** 
  53.      *请求URL 
  54.      */  
  55.     private String url;  
  56.      
  57.     public boolean isSkipCount() {  
  58.         return skipCount;  
  59.     }  
  60.   
  61.     public void setSkipCount(boolean skipCount) {  
  62.         this.skipCount = skipCount;  
  63.     }  
  64.   
  65.       
  66.     public boolean isJumpText() {  
  67.         return jumpText;  
  68.     }  
  69.   
  70.     public void setJumpText(boolean jumpText) {  
  71.         this.jumpText = jumpText;  
  72.     }  
  73.   
  74.     public boolean isPrevPage() {  
  75.         return prevPage;  
  76.     }  
  77.   
  78.     public void setPrevPage(boolean prevPage) {  
  79.         this.prevPage = prevPage;  
  80.     }  
  81.   
  82.     public boolean isStartPage() {  
  83.         return startPage;  
  84.     }  
  85.   
  86.     public void setStartPage(boolean startPage) {  
  87.         this.startPage = startPage;  
  88.     }  
  89.   
  90.     public boolean isForPage() {  
  91.         return forPage;  
  92.     }  
  93.   
  94.     public void setForPage(boolean forPage) {  
  95.         this.forPage = forPage;  
  96.     }  
  97.   
  98.     public boolean isShowCurAndSum() {  
  99.         return showCurAndSum;  
  100.     }  
  101.   
  102.     public void setShowCurAndSum(boolean showCurAndSum) {  
  103.         this.showCurAndSum = showCurAndSum;  
  104.     }  
  105.       
  106.     public boolean isRefresh() {  
  107.         return refresh;  
  108.     }  
  109.   
  110.     public void setRefresh(boolean refresh) {  
  111.         this.refresh = refresh;  
  112.     }  
  113.   
  114.     public Page getPage() {  
  115.         return page;  
  116.     }  
  117.   
  118.     public void setPage(Page page) {  
  119.         this.page = page;  
  120.     }  
  121.   
  122.     public String getUrl() {  
  123.         return url;  
  124.     }  
  125.   
  126.     public void setUrl(String url) {  
  127.         this.url = url;  
  128.     }  
  129.   
  130.     /** 
  131.      * 输出分页标签 
  132.      */  
  133.     public int doStartTag() throws JspException {  
  134.         try {  
  135.             if(page!=null){  
  136.                 long currentPage=page.getCurrentPage();   //获得当前页面  
  137.                 long totalPage=page.getTotalPage();       //获得总页数  
  138.                 StringBuilder builder=new StringBuilder("<script type='text/javascript'>");  
  139.                 builder.append("function loadPage(pagenum){var url='"+url+"?page.currentPage='+pagenum;self.location.href=url}");  
  140.                 builder.append("function jumpPage(){var jumpPageNum=document.getElementById('jump_page_num').value;");  
  141.                 builder.append("if(jumpPageNum.length<=0){alert('请填写要跳转的页面值!');return false;}");  
  142.                 builder.append("if(!(/^[1-9]\\d*$/).test(jumpPageNum)){alert('跳转页面值只能填写正整数');return false;}");  
  143.                 builder.append("if(jumpPageNum>"+page.getTotalPage()+"){alert('跳转的页数大于总页数!');return false;}");  
  144.                 builder.append("var url='"+url+"?page.currentPage='+jumpPageNum;self.location.href=url }");  
  145.                 builder.append("function refreshPage(){self.location.href='"+url+"';}");  
  146.                 builder.append("</script>");  
  147.                 builder.append("<div class='page'><ul>");  
  148.                 //如果当前页面为第一页  
  149.                 if(currentPage==1){  
  150.                     if(startPage)  
  151.                         builder.append("<li class='start_off'></li>");  
  152.                     if(prevPage)  
  153.                         builder.append("<li class='first_off'></li>");  
  154.                 }  
  155.                 //当前页面不是第一页  
  156.                 else{  
  157.                     if(startPage)  
  158.                         builder.append("<li class='start' οnclick='javascript:loadPage(\"1\");'></li>");  
  159.                     if(prevPage)  
  160.                         builder.append("<li class='first' οnclick='javascript:loadPage(\""+(page.getCurrentPage()-1)+"\");'></li>");  
  161.                 }  
  162.                 //判断是否显示google风格的分页  
  163.                 if(forPage && totalPage>0){  
  164.                     builder.append("<li>");  
  165.                     builder.append("<div class='pagenumber'>");  
  166.                     builder.append("<ul>");  
  167.                     builder.append("<li class='fleft'></li>");  
  168.                     /** 
  169.                      * 每次只取9页 
  170.                      */  
  171.                     for(long pagenum=1;pagenum<=page.getTotalPage();pagenum++){  
  172.                         if(page.getCurrentPage()<5 && pagenum<10){      
  173.                             if(pagenum==page.getCurrentPage())  
  174.                                 builder.append("<li class='nowPage' title='第"+pagenum+"页'>"+pagenum+"</li>");  
  175.                             else  
  176.                                 builder.append("<li class='fcenter' title='第"+pagenum+"页'><a href='"+url+"?page.currentPage="+pagenum+"'>"+pagenum+"</a></li>");  
  177.                         }else{  
  178.                             //页面大于5以后,当前页位于中间  
  179.                             if(pagenum>page.getCurrentPage()-5 && pagenum<page.getCurrentPage()+5){  
  180.                                 if(pagenum==page.getCurrentPage())  
  181.                                     builder.append("<li class='nowPage' title='第"+pagenum+"页'>"+pagenum+"</li>");  
  182.                                 else  
  183.                                     builder.append("<li class='fcenter' title='第"+pagenum+"页'><a href='"+url+"?page.currentPage="+pagenum+"'>"+pagenum+"</a></li>");  
  184.                             }  
  185.                         }  
  186.                     }  
  187.                     builder.append("<li class='fright'></li>");  
  188.                     builder.append("</ul>");  
  189.                     builder.append("</div>");  
  190.                     builder.append("</li>");  
  191.                 }  
  192.   
  193.                 //如果当前页面为尾页  
  194.                 if(currentPage==totalPage || totalPage<=0){  
  195.                     if(prevPage)  
  196.                         builder.append("<li class='next_off'></li>");  
  197.                     if(startPage)  
  198.                         builder.append("<li class='end_off'></li>");  
  199.                       
  200.                 }  
  201.                 //当前页面不是尾页  
  202.                 else{  
  203.                     if(prevPage)  
  204.                         builder.append("<li class='next' οnclick='javascript:loadPage(\""+(page.getCurrentPage()+1)+"\");'></li>");  
  205.                     if(startPage)  
  206.                         builder.append("<li class='end' οnclick='javascript:loadPage(\""+page.getTotalPage()+"\");'></li>");  
  207.                 }  
  208.                 /* 先屏蔽 
  209.                 //如果启用页面显示页数选择 这里启用5 10 15 20供用户选择 
  210.                 if(skipCount){ 
  211.                     builder.append("<li>"); 
  212.                     builder.append("<select class='rounded' name='page.pageSize'"); 
  213.                     builder.append("<option value='5'>5条/页</option>"); 
  214.                     builder.append("<option value='10' selected='selected'>10条/页</option>"); 
  215.                     builder.append("<option value='15'>15条/页</option>"); 
  216.                     builder.append("<option value='20'>20条/页</option>"); 
  217.                     builder.append("</select>"); 
  218.                     builder.append("</li>"); 
  219.                 }*/  
  220.                 //如果启用页面跳转  
  221.                   
  222.                 if(jumpText && totalPage>0){  
  223.                     builder.append("<li>");  
  224.                     builder.append("<input type='text' size='5' name='page.currentPage' id='jump_page_num' class='rounded jumpInput'>");  
  225.                     builder.append("</li>");  
  226.                     builder.append("<li class='jump' οnclick='javascript:jumpPage();'></li>");  
  227.                 }  
  228.                 //如启用总页数显示  
  229.                 if(showCurAndSum){  
  230.                     builder.append("<li class='pageInfo'>共<span>"+page.getTotalCount()+"</span>条/共<span>"+page.getTotalPage()+"</span>页</li>");  
  231.                 }  
  232.                 if(refresh){  
  233.                     builder.append("<li class='refresh' title='刷新' οnclick='javascript:refreshPage();'></li>");  
  234.                 }  
  235.                 builder.append("</ul></div>");  
  236.                 super.pageContext.getOut().print(builder.toString());  
  237.             }  
  238.         } catch (Exception e) {  
  239.             e.printStackTrace();  
  240.         }  
  241.         return SKIP_BODY;  
  242.     }  
  243.   
  244. }  
 

    4.标签配置

 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"  
  3.                         "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">  
  4. <taglib>  
  5.     <tlib-version>1.0</tlib-version>  
  6.     <jsp-version>1.2</jsp-version>  
  7.     <short-name>w</short-name>  
  8.     <uri>http://wilr.iteye.com</uri>  
  9.     <display-name>分页通用标签</display-name>  
  10.     <tag>  
  11.         <name>p</name>  
  12.         <tag-class>wilr.utils.paging.taglib.PagingTag</tag-class>  
  13.         <attribute>  
  14.             <name>skipCount</name>  
  15.             <required>false</required>  
  16.             <rtexprvalue>true</rtexprvalue>  
  17.             <type>boolean</type>  
  18.             <description>是否显示条数选择</description>  
  19.         </attribute>  
  20.         <attribute>  
  21.             <name>jumpText</name>  
  22.             <required>false</required>  
  23.             <rtexprvalue>true</rtexprvalue>  
  24.             <type>boolean</type>  
  25.             <description>是否显示跳页输入</description>  
  26.         </attribute>  
  27.         <attribute>  
  28.             <name>prevPage</name>  
  29.             <required>false</required>  
  30.             <rtexprvalue>true</rtexprvalue>  
  31.             <type>boolean</type>  
  32.             <description>是否显示上/下一页</description>  
  33.         </attribute>  
  34.         <attribute>  
  35.             <name>startPage</name>  
  36.             <required>false</required>  
  37.             <rtexprvalue>true</rtexprvalue>  
  38.             <type>boolean</type>  
  39.             <description>是否显示首/尾页</description>  
  40.         </attribute>  
  41.         <attribute>  
  42.             <name>forPage</name>  
  43.             <required>false</required>  
  44.             <rtexprvalue>true</rtexprvalue>  
  45.             <type>boolean</type>  
  46.             <description>是否使用循环输出页</description>  
  47.         </attribute>  
  48.         <attribute>  
  49.             <name>showCurAndSum</name>  
  50.             <required>false</required>  
  51.             <rtexprvalue>true</rtexprvalue>  
  52.             <type>boolean</type>  
  53.             <description>是否显示总页/总条数</description>  
  54.         </attribute>  
  55.         <attribute>  
  56.             <name>refresh</name>  
  57.             <required>false</required>  
  58.             <rtexprvalue>true</rtexprvalue>  
  59.             <type>boolean</type>  
  60.             <description>是否可以刷新</description>  
  61.         </attribute>  
  62.         <attribute>  
  63.             <name>url</name>  
  64.             <required>true</required>  
  65.             <rtexprvalue>true</rtexprvalue>  
  66.             <type>String</type>  
  67.             <description>请求URL</description>  
  68.         </attribute>  
  69.         <attribute>  
  70.             <name>page</name>  
  71.             <required>true</required>  
  72.             <rtexprvalue>true</rtexprvalue>  
  73.             <description>分页对象</description>  
  74.         </attribute>  
  75.     </tag>  
  76. </taglib>  

     5.分页数据持久层实例工厂

 

Java代码   收藏代码
  1. package wilr.utils.paging.factory;  
  2. import wilr.utils.paging.domain.Page;  
  3.   
  4. /** 
  5.  * @project paging 
  6.  * @path wilr.utils.paging.factory 
  7.  * @desc 分页组件接口工厂 
  8.  * @author Wilr  
  9.  * @QQ:545881075 
  10.  * @time 2012-2-29 上午10:08:16 
  11.  */  
  12. public interface PagingFactory {  
  13.     /** 
  14.      * @project paging 
  15.      * @path wilr.utils.paging.factory 
  16.      * @desc 查询对象条数 
  17.      * @author Wilr  
  18.      * @QQ:545881075 
  19.      * @time 2012-2-29 上午10:08:49 
  20.      * @param page 分页对象 
  21.      * @return 
  22.      */  
  23.     public Integer queryObjCount(Page page);  
  24.     /** 
  25.      * @project paging 
  26.      * @path wilr.utils.paging.factory 
  27.      * @desc 查询对象 
  28.      * @author Wilr  
  29.      * @QQ:545881075 
  30.      * @time 2012-2-29 上午10:08:49 
  31.      * @param page 分页对象 
  32.      * @return 
  33.      */  
  34.     public Page queryObjList(Page page);  
  35. }  

     6.分页组件持久层实例工厂实现类(这里采用Spring注解方式,有需求的朋友可以自己修改)

Java代码   收藏代码
  1. package wilr.utils.paging.factory.impl;  
  2. import javax.annotation.Resource;  
  3. import org.hibernate.Query;  
  4. import org.hibernate.SessionFactory;  
  5. import org.springframework.stereotype.Service;  
  6. import org.springframework.transaction.annotation.Propagation;  
  7. import org.springframework.transaction.annotation.Transactional;  
  8.   
  9. import wilr.utils.paging.domain.Page;  
  10. import wilr.utils.paging.factory.PagingFactory;  
  11. @Service  
  12. @Transactional  
  13. public class PagingFactoryImpl implements PagingFactory {  
  14.     @Resource SessionFactory factory;  
  15.     @Transactional(propagation=Propagation.NOT_SUPPORTED)   
  16.     public Integer queryObjCount(Page page) {  
  17.         StringBuffer queryHQL=new StringBuffer("SELECT COUNT(*) FROM "+page.getObjName());  
  18.         //如果查询条件不为空  
  19.         if(page.getCondition()!=null && !page.getCondition().trim().equals(""))  
  20.             queryHQL.append(" WHERE "+page.getCondition());  
  21.         //如果排序不为空  
  22.         if(page.getOrderBy()!=null && !page.getOrderBy().trim().equals(""))  
  23.             queryHQL.append(" order by "+page.getOrderBy());  
  24.         return Integer.parseInt(factory.getCurrentSession().createQuery(queryHQL.toString()).uniqueResult().toString());  
  25.     }  
  26.     @Transactional(propagation=Propagation.NOT_SUPPORTED)   
  27.     public Page queryObjList(Page page) {  
  28.             StringBuffer queryHQL=new StringBuffer();  
  29.             if(page.getQueryField()!=null && !page.getQueryField().trim().equals(""))  
  30.                 queryHQL.append("SELECT "+page.getQueryField()+" FROM "+page.getObjName());  
  31.             else  
  32.                 queryHQL.append("FROM "+page.getObjName());  
  33.             if(page.getCondition()!=null && !page.getCondition().trim().equals(""))  
  34.                 queryHQL.append(" WHERE "+page.getCondition());  
  35.             if(page.getOrderBy()!=null)  
  36.                 queryHQL.append(" order by "+page.getOrderBy());  
  37.             System.out.println(queryHQL.toString());  
  38.             Query query=factory.getCurrentSession().createQuery(queryHQL.toString());  
  39.             query.setFirstResult(page.getStartIndex());  
  40.             query.setMaxResults(page.getPageSize());  
  41.             page.setTotalCount(this.queryObjCount(page));  
  42.             page.setObjList(query.list());  
  43.             return page;  
  44.         }   
  45. }  
 

    7.Service或Action使用Demo

     7.1 注入分页数据持久层工厂

 

Java代码   收藏代码
  1. @Resource PagingFactory factory;  

 

    7.2 声明分页主键实体对象Page并get set

Java代码   收藏代码
  1. private Page page;  
  2. public Page getPage() {return page;}  
  3. public void setPage(Page page) {this.page = page;}  
 

    7.3 方法调用

Java代码   收藏代码
  1. if(page==null)page=new Page();  
  2. //对象名称  
  3. page.setObjName("Demo t");  
  4. //条件  
  5. page.setCondition("t.id>0");  
  6. //排序  
  7. page.setOrderBy("t.id desc");  
  8. //每页显示条数(默认10)  
  9. page.setPageSize(15);  
  10. //查询属性(为空查询所有)  
  11. page.setQueryField("t.id,t.name');  
  12. //调用工厂获得数据  
  13. page=factory.queryObjList(page);  
 

    8.页面使用(css相关可参考第1条查看我的博客获得)

    8.1 引入标签

 

Xml代码   收藏代码
  1. <%@ taglib prefix="w" uri="http://wilr.iteye.com"%>  

    8.2 引入CSS 

Html代码   收藏代码
  1. <link rel="stylesheet" type="text/css" href="${path}/paging/paging.css">  
    

    8.3 使用标签

Java代码   收藏代码
  1. <w:p url="${path}/test!loadDemoList.action" page="${page}"></w:p>  

    8.3页面调用数据

Html代码   收藏代码
  1. <s:if test="page.objList==null || page.objList.size==0">  
  2.            无信息!  
  3.  </s:if>  
  4.   <s:else>  
  5.   <s:iterator value="page.objList" id="demo">  
  6.        ${demo.id}--${demo.name}  
  7.   </s:iterator>  
  8.   </s:else>  

    需要JSON数据可在Action中如下处理:

  

Java代码   收藏代码
  1. JSONArray.fromObject(page.getObjList());   

    

   标签全部结束,将工厂、实体、标签打包,以后就可以通用。呵呵!!!!欢迎大家交流和提出宝贵的意见!!!

   附:标签参数说明:

 

Html代码   收藏代码
  1. 必选参数   
  2.    url:查询列表的action访问路径。   
  3.    page:分页对象。从actiong中得到。  
  4.   
  5. 可选参数:   
  6.    forPage:是否显示多页风格(类似google),值:true/false    默认为:true   
  7.    jumpText:是否可以输入跳转页,值:true/false    默认为:true   
  8.    prevPage:是否显示上/下一页,值:true/false    默认为:true   
  9.    prevPage:是否显示上/下一页,值:true/false    默认为:true   
  10.    startPage:是否显示首/尾页,值:true/false    默认为:true   
  11.    showCurAndSum:是否显示总条数和总页数,值:true/false    默认为:true   
  12.    refresh:是否启用刷新,值:true/false    默认为 true  

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、资源1项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值