Struts2+Hibernate+Spring 分页自定义标签

分页问题一直是项目中不可避免的问题,之前由于一直忙着做项目,里面的分页觉得做的不是很完善,很多的代码需要复制粘帖,特别是在jsp页面上显示的时候,所以花了几天时间好好完善下!

1、封装分页信息的bean

 

[java] view plaincopy
  1. package com.beckham.page;  
  2. import java.util.List;  
  3. /** 
  4.  * @author beckham 
  5.  *  Jul 30, 2009   4:13:43 PM 
  6.  *  分页信息 
  7.  */  
  8. public class PageBean {  
  9.     private int totalSize; // 记录总条数  
  10.     private int pageSize; // 每页显示条数  
  11.     private int prePage; // 上一页  
  12.     private int nextPage; // 下一页  
  13.     private int currPage; // 当前页  
  14.     private int lastPage; // 最后页  
  15.     private int pageCount; // 总页数  
  16.     private int beginIndex ;  
  17.     private int endIndex ;  
  18.     public int getBeginIndex() {  
  19.         return beginIndex;  
  20.     }  
  21.     public void setBeginIndex(int beginIndex) {  
  22.         this.beginIndex = beginIndex;  
  23.     }  
  24.     public int getEndIndex() {  
  25.         return endIndex;  
  26.     }  
  27.     public void setEndIndex(int endIndex) {  
  28.         this.endIndex = endIndex;  
  29.     }  
  30.     public int getTotalSize() {  
  31.         return totalSize;  
  32.     }  
  33.     public void setTotalSize(int totalSize) {  
  34.         this.totalSize = totalSize;  
  35.     }  
  36.     public int getPageSize() {  
  37.         return pageSize;  
  38.     }  
  39.     public void setPageSize(int pageSize) {  
  40.         this.pageSize = pageSize;  
  41.     }  
  42.     public int getPrePage() {  
  43.         return prePage;  
  44.     }  
  45.     public void setPrePage(int prePage) {  
  46.         this.prePage = prePage;  
  47.     }  
  48.     public int getNextPage() {  
  49.         return nextPage;  
  50.     }  
  51.     public void setNextPage(int nextPage) {  
  52.         this.nextPage = nextPage;  
  53.     }  
  54.     public int getCurrPage() {  
  55.         return currPage;  
  56.     }  
  57.     public void setCurrPage(int currPage) {  
  58.         this.currPage = currPage;  
  59.     }  
  60.     public int getLastPage() {  
  61.         return lastPage;  
  62.     }  
  63.     public void setLastPage(int lastPage) {  
  64.         this.lastPage = lastPage;  
  65.     }  
  66.     public int getPageCount() {  
  67.         return pageCount;  
  68.     }  
  69.     public void setPageCount(int pageCount) {  
  70.         this.pageCount = pageCount;  
  71.     }  
  72. }  

 

2、通过 传递的参数来计算分页信息,参数主要有 当前页(currPage)、结果集的总条数(totalSize)、每页显示的数量(pageSize),我把pageSize写在了配置文件里面,这样可以灵活的修改配置。

 

[java] view plaincopy
  1. package com.beckham.page;  
  2. import com.beckham.util.PropertyUtil;  
  3. public class PageMessage {  
  4.     /* 
  5.      * (non-Javadoc) 
  6.      * 获取分页信息 
  7.      * @see com.beckham.page.PageMessageInterface#getPageMessage(int, 
  8.      *      java.lang.String) 
  9.      */  
  10.     public static PageBean getPageMessage(int currPage, int totalSize)  
  11.             throws Exception {  
  12.         PageBean pagebean = new PageBean();  
  13.         int pageSize = PropertyUtil.getPageSize();  
  14.         int pageCount = 0;  
  15.         int prePage = 0;  
  16.         int nextPage = 0;  
  17.         int begindex;  
  18.         int endindex;  
  19.         // 总页数  
  20.         if (totalSize % pageSize == 0) { // 判断是否整除  
  21.             pageCount = (int) totalSize / pageSize;  
  22.         } else {  
  23.             pageCount = (int) totalSize / pageSize + 1;  
  24.         }  
  25.         if (currPage > 1) {  
  26.             prePage = currPage - 1// 上一页  
  27.         } else {  
  28.             prePage = 1;  
  29.         }  
  30.         if (currPage < pageCount) {  
  31.             nextPage = currPage + 1// 下一页  
  32.         } else {  
  33.             nextPage = currPage;  
  34.         }  
  35.          //开始索引  
  36.          if (currPage > pageCount) {  
  37.              begindex = (pageCount - 1) * pageSize;  
  38.             } else {  
  39.                 begindex = (currPage - 1) * pageSize;  
  40.             }  
  41.          //结束索引  
  42.          if(currPage*pageSize>totalSize){  
  43.              endindex = totalSize ;  
  44.          }else{  
  45.              endindex=currPage*pageSize ;  
  46.          }  
  47.           
  48.         pagebean.setPrePage(prePage);  
  49.         pagebean.setPageSize(pageSize);  
  50.         pagebean.setCurrPage(currPage);  
  51.         pagebean.setTotalSize(totalSize);  
  52.         pagebean.setPageCount(pageCount);  
  53.         pagebean.setLastPage(pageCount);  
  54.         pagebean.setNextPage(nextPage);  
  55.         pagebean.setBeginIndex(begindex) ;  
  56.         pagebean.setEndIndex(endindex) ;  
  57.         return pagebean;  
  58.     }  
  59. }  

 

3、由此就可以在action里面调用了。

 

[java] view plaincopy
  1. package com.beckham.struts.actions;  
  2. import java.util.List;  
  3. import java.util.Map;  
  4. import org.apache.struts2.interceptor.RequestAware;  
  5. import com.beckham.model.User;  
  6. import com.beckham.page.PageBean;  
  7. import com.beckham.page.PageMessage;  
  8. import com.beckham.service.UserService;  
  9. import com.opensymphony.xwork2.ActionSupport;  
  10. @SuppressWarnings("serial")  
  11. public class UserListAction extends ActionSupport implements RequestAware {  
  12.     private UserService userService;  
  13.     private int currPage;  
  14.     @SuppressWarnings("unchecked")  
  15.     private Map request;  
  16.     private String path;  
  17.     private String password ;  
  18.   
  19.     public String getPassword() {  
  20.         return password;  
  21.     }  
  22.     public void setPassword(String password) {  
  23.         this.password = password;  
  24.     }  
  25.     public String getPath() {  
  26.         return path;  
  27.     }  
  28.     public void setPath(String path) {  
  29.         this.path = path;  
  30.     }  
  31.     @SuppressWarnings( { "unchecked""unchecked" })  
  32.     public String execute() throws Exception {  
  33.         //查询结果集总数  
  34.         String hqlSize = "select count(*) from User";  
  35.         //查询目标结果集  
  36.         String hql = "from User";  
  37.           
  38.         if (currPage == 0) {  
  39.             currPage = 1;  
  40.         }  
  41.         //获取分页信息  
  42.         PageBean pageBean = PageMessage.getPageMessage(currPage, userService.gettotalSize(hqlSize));  
  43.          
  44.         /* 
  45.          *  
  46.          *获取结果集,这里是和hibernate结合使用,所以参数需要传一个beginIndex 
  47.          * pageSize写在配置文件里面,所以这里就不用当做参数传递了 
  48.          */  
  49.         List<User> list = userService.queryUser(hql, pageBean.getBeginIndex());  
  50.         StringBuffer sb = new StringBuffer();  
  51.           
  52.         //带有参数的URL  
  53.         sb.append("userlist.action?password=").append(password).append("&") ;  
  54.         path = sb.toString();  
  55.         request.put("users", list);  
  56.         request.put("path", path) ;  
  57.         request.put("pageBean", pageBean);  
  58.         return SUCCESS;  
  59.     }  
  60.     public UserService getUserService() {  
  61.         return userService;  
  62.     }  
  63.     public void setUserService(UserService userService) {  
  64.         this.userService = userService;  
  65.     }  
  66.     @SuppressWarnings("unchecked")  
  67.     public void setRequest(Map request) {  
  68.         this.request = request;  
  69.     }  
  70.     @SuppressWarnings("unchecked")  
  71.     public Map getRequest() {  
  72.         return request;  
  73.     }  
  74.     public int getCurrPage() {  
  75.         return currPage;  
  76.     }  
  77.     public void setCurrPage(int currPage) {  
  78.         this.currPage = currPage;  
  79.     }  
  80. }  

 

当然在调用的时候需要调用service里面的2个方法 gettotalSize(hqlSize) 和queryUser(hql, pageBean.getBeginIndex())

 

这2个方法的作用是获取结果集的总记录数和 获取本次查询的结果集,具体实现如下:

[java] view plaincopy
  1. public int gettotalSize(String hql) throws Exception {  
  2.         int totalsize = 0;  
  3.         try {  
  4.             totalsize = Integer.parseInt(this.getHibernateTemplate().find(hql)  
  5.                     .get(0).toString());  
  6.         } catch (Exception e) {  
  7.             e.printStackTrace();  
  8.             throw new Exception("查询用户总数失败", e);  
  9.         }  
  10.         return totalsize;  
  11.     }  
  12.   
  13.     public List<User> queryUser(String hql, int beginIndex) throws Exception {  
  14.         try {  
  15.             return (List<User>) this.getHibernateTemplate().getSessionFactory()  
  16.                     .getCurrentSession().createQuery(hql).setFirstResult(  
  17.                             beginIndex).setMaxResults(  
  18.                             PropertyUtil.getPageSize()).list();  
  19.         } catch (Exception e) {  
  20.             e.printStackTrace();  
  21.             throw new Exception("查询用户出现异常", e);  
  22.         }  
  23.     }  

 

实现里面的PropertyUtil.getPageSize() 方法是从配置文件里面读取pageSize

 

[xhtml] view plaincopy
  1.      pageSize=5  
  2.   
  3. downloadPath=img/  
  4.   
  5. pageNumber=10  

 

PropertyUtil.java

[java] view plaincopy
  1. package com.beckham.util;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4. import java.util.Properties;  
  5. public class PropertyUtil {  
  6.     private static Properties p = new Properties() ;  
  7.     private static InputStream inputStream = null ;  
  8.     static {  
  9.      inputStream = PropertyUtil.class.getResourceAsStream("/page.properties")  ;  
  10.      try {  
  11.         p.load(inputStream) ;  
  12.     } catch (IOException e) {  
  13.         e.printStackTrace();  
  14.     }  
  15.     }  
  16.     public static int getPageSize(){  
  17.         return Integer.parseInt(p.getProperty("pageSize"));  
  18.     }  
  19.     public static int getPageNumber(){  
  20.         return Integer.parseInt(p.getProperty("pageNumber"));  
  21.     }  
  22.     public static String getDownloadPath(){  
  23.         return p.getProperty("downloadPath");  
  24.     }  
  25.     public static void main(String[] args) {  
  26.          System.out.println(getPageSize());  
  27.     }  
  28.       
  29. }  

 

到此,分页的逻辑已经算是完成了,主要实现是利用了hibernateTemplate来实现查询,所以在查询的时候其实只需要setFirstResult ,setMaxResults就可以,也就是从什么地方开始取,每次最多取多少条记录!

 

接下来就是写标签了

 

[java] view plaincopy
  1. package com.tag;  
  2. import java.io.IOException;  
  3. import javax.servlet.jsp.JspException;  
  4. import javax.servlet.jsp.JspWriter;  
  5. import javax.servlet.jsp.tagext.SimpleTagSupport;  
  6. import com.beckham.util.PropertyUtil;  
  7. /** 
  8.  * @author beckham 分页标签 Oct 22, 2009 9:20:49 PM 
  9.  */  
  10. public class PageTag extends SimpleTagSupport {  
  11.     private String path; // 请求路径  
  12.     private String param; // 传递参数  
  13.     private int currPage; // 当前页  
  14.     private int totalPage;// 总页数  
  15.     private int totalSize;  
  16.     private int pageCount;  
  17.     private int pageSize;  
  18.     public int getTotalSize() {  
  19.         return totalSize;  
  20.     }  
  21.     public void setTotalSize(int totalSize) {  
  22.         this.totalSize = totalSize;  
  23.     }  
  24.     public int getPageCount() {  
  25.         return pageCount;  
  26.     }  
  27.     public void setPageCount(int pageCount) {  
  28.         this.pageCount = pageCount;  
  29.     }  
  30.     public int getPageSize() {  
  31.         return pageSize;  
  32.     }  
  33.     public void setPageSize(int pageSize) {  
  34.         this.pageSize = pageSize;  
  35.     }  
  36.     public String getPath() {  
  37.         return path;  
  38.     }  
  39.     public void setPath(String path) {  
  40.         this.path = path;  
  41.     }  
  42.     public String getParam() {  
  43.         return param;  
  44.     }  
  45.     public void setParam(String param) {  
  46.         this.param = param;  
  47.     }  
  48.     public int getCurrPage() {  
  49.         return currPage;  
  50.     }  
  51.     public void setCurrPage(int currPage) {  
  52.         this.currPage = currPage;  
  53.     }  
  54.     public int getTotalPage() {  
  55.         return totalPage;  
  56.     }  
  57.     public void setTotalPage(int totalPage) {  
  58.         this.totalPage = totalPage;  
  59.     }  
  60.     public void doTag() throws JspException, IOException {  
  61.         JspWriter out = this.getJspContext().getOut();  
  62.         StringBuffer sb = new StringBuffer();  
  63.           
  64.         sb.append("<mce:style type=/"text/css/"><!--  
  65. ") ;  
  66.            
  67.         sb.append("* { margin:0; padding:0;}") ;  
  68.            
  69.         sb.append("body { font-size:13px; font-family:Verdana;width:100%;}") ;  
  70.            
  71.         sb.append("a { color:#333; text-decoration:none;}") ;  
  72.         sb.append("a:hover {text-decoration:none;color:#FF0000;font-weight:bold;}");  
  73.            
  74.         sb.append("ul { list-style:none;}") ;  
  75.            
  76.         sb.append("#pagelist {width:100%; margin:30px auto; padding:6px 0px; height:20px;}") ;  
  77.            
  78.         sb.append("#pagelist ul li { float:left; border:1px solid #5d9cdf; height:20px; line-height:20px; margin:0px 2px;}") ;  
  79.            
  80.         sb.append("#pagelist ul li a, .pageinfo { display:block; padding:0px 6px; background:#e6f2fe;}") ;  
  81.            
  82.         sb.append(".current { background:#a9d2ff; display:block; padding:0px 6px; font-weight:bold;}") ;  
  83.            
  84.         sb.append("  
  85. --></mce:style><style type=/"text/css/" mce_bogus="1">") ;  
  86.            
  87.         sb.append("* { margin:0; padding:0;}") ;  
  88.            
  89.         sb.append("body { font-size:13px; font-family:Verdana;width:100%;}") ;  
  90.            
  91.         sb.append("a { color:#333; text-decoration:none;}") ;  
  92.         sb.append("a:hover {text-decoration:none;color:#FF0000;font-weight:bold;}");  
  93.            
  94.         sb.append("ul { list-style:none;}") ;  
  95.            
  96.         sb.append("#pagelist {width:100%; margin:30px auto; padding:6px 0px; height:20px;}") ;  
  97.            
  98.         sb.append("#pagelist ul li { float:left; border:1px solid #5d9cdf; height:20px; line-height:20px; margin:0px 2px;}") ;  
  99.            
  100.         sb.append("#pagelist ul li a, .pageinfo { display:block; padding:0px 6px; background:#e6f2fe;}") ;  
  101.            
  102.         sb.append(".current { background:#a9d2ff; display:block; padding:0px 6px; font-weight:bold;}") ;  
  103.            
  104.         sb.append("</style>") ;  
  105.            
  106.           
  107.         sb.append("<div id=/"pagelist/">");  
  108.         sb.append("<ul>") ;  
  109.   
  110.         if (currPage == 1) {  
  111.             sb.append("<li>") ;  
  112.             sb.append("首页");  
  113.             sb.append("</li>") ;  
  114.             sb.append("<li>") ;  
  115.             sb.append("上一页");  
  116.             sb.append("</li>") ;  
  117.               
  118.         } else {  
  119.             sb.append("<li>") ;  
  120.             sb.append("<a href="/" mce_href="/""");  
  121.             sb.append(path);  
  122.             sb.append(param);  
  123.             sb.append("=1");  
  124.             sb.append("/"");  
  125.             sb.append(">");  
  126.             sb.append("首页");  
  127.             sb.append("</a>");  
  128.             sb.append("</li>") ;  
  129.             sb.append("<li>") ;  
  130.             sb.append("<a href="/" mce_href="/""");  
  131.             sb.append(path);  
  132.             sb.append(param);  
  133.             sb.append("=");  
  134.             sb.append(currPage - 1);  
  135.             sb.append("/"");  
  136.             sb.append(">");  
  137.             sb.append("上一页");  
  138.             sb.append("</a>");  
  139.             sb.append("</li>") ;  
  140.                
  141.         }  
  142.         // 显示页码 默认显示pageNumber个页码  
  143.         int pageNumber = PropertyUtil.getPageNumber();  
  144.         // 总页数小于需要显示的页码数  
  145.         int result = (currPage-1) / pageNumber;  
  146.         int begin = 1;  
  147.         int end = 1;  
  148.         begin = result * pageNumber+1;  
  149.         end = (result + 1) * pageNumber;  
  150.         if (end >= totalPage) {  
  151.             end = totalPage;  
  152.         }  
  153.         for (int i = begin; i <currPage; i++) {  
  154.             sb.append("<li>").append("<a href="/" mce_href="/""").append(path).append(param).append("=")  
  155.                     .append(i).append("/"").append("></a>").append(i).append(  
  156.                             "</a>").append("</li>");  
  157.         }  
  158.         sb.append("<li class=/"current/">").append(currPage).append("</li>");  
  159.         for (int i = currPage+1; i <=end; i++) {  
  160.             sb.append("<li>").append("<a href="/" mce_href="/""").append(path).append(param).append("=")  
  161.                     .append(i).append("/"").append("></a>").append(i).append(  
  162.                             "</a>").append("</li>");  
  163.         }  
  164.         if (currPage == totalPage) {  
  165.             sb.append("<li>") ;  
  166.             sb.append("下一页");  
  167.             sb.append("</li>") ;  
  168.                
  169.             sb.append("<li>") ;  
  170.             sb.append("末页");  
  171.             sb.append("</li>") ;  
  172.         } else {  
  173.             sb.append("<li>") ;  
  174.             sb.append("<a href="/" mce_href="/""");  
  175.             sb.append(path);  
  176.             sb.append(param);  
  177.             sb.append("=");  
  178.             sb.append(currPage + 1);  
  179.             sb.append("/"");  
  180.             sb.append(">");  
  181.             sb.append("下一页");  
  182.             sb.append("</a>");  
  183.             sb.append("</li>") ;  
  184.                
  185.             sb.append("<li>") ;  
  186.             sb.append("<a href="/" mce_href="/""");  
  187.             sb.append(path);  
  188.             sb.append(param);  
  189.             sb.append("=");  
  190.             sb.append(totalPage);  
  191.             sb.append("/"");  
  192.             sb.append(">");  
  193.             sb.append("末页");  
  194.             sb.append("</a>");  
  195.             sb.append("</li>") ;  
  196.                
  197.         }  
  198.         sb.append("<li>") ;  
  199.         sb.append("    ");  
  200.         sb.append("总共");  
  201.         sb.append("<font color=/"red/">");  
  202.         sb.append(totalSize);  
  203.         sb.append("</font>");  
  204.         sb.append("条结果");  
  205.         sb.append("  ");  
  206.         sb.append("  ");  
  207.         sb.append("当前");  
  208.         sb.append("<font color=/"red/">");  
  209.         sb.append(currPage);  
  210.         sb.append("</font>");  
  211.         sb.append("/");  
  212.         sb.append("<font color=/"red/">");  
  213.         sb.append(pageCount);  
  214.         sb.append("页") ;  
  215.         sb.append("</font>");  
  216.         sb.append("</li>") ;  
  217.         sb.append("    ");  
  218.         sb.append("</ul>") ;  
  219.            
  220.         sb.append("</div>");  
  221.         out.println(sb);  
  222.     }  
  223. }  

 

标签写完,当然就是写tld文件了

 

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <taglib xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
  5.     version="2.1">  
  6.     <tlib-version>1.1</tlib-version>  
  7.     <short-name>pageTag</short-name>  
  8.     <uri>/WEB-INF/pagetag.tld</uri>  
  9.     <tag>  
  10.         <name>pageInfo</name>  
  11.         <tag-class>com.tag.PageTag</tag-class>  
  12.         <body-content>empty</body-content>  
  13.           
  14.         <attribute>  
  15.             <name>path</name>  
  16.             <required>true</required>  
  17.             <rtexprvalue>true</rtexprvalue>  
  18.         </attribute>  
  19.         <attribute>  
  20.             <name>currPage</name>  
  21.             <required>true</required>  
  22.             <rtexprvalue>true</rtexprvalue>  
  23.             <type>java.lang.Integer</type>  
  24.         </attribute>  
  25.         <attribute>  
  26.             <name>param</name>  
  27.             <required>true</required>  
  28.             <rtexprvalue>true</rtexprvalue>  
  29.         </attribute>  
  30.         <attribute>  
  31.             <name>totalPage</name>  
  32.             <required>true</required>  
  33.             <rtexprvalue>true</rtexprvalue>  
  34.             <type>java.lang.Integer</type>  
  35.         </attribute>  
  36.         <attribute>  
  37.             <name>totalSize</name>  
  38.             <required>true</required>  
  39.             <rtexprvalue>true</rtexprvalue>  
  40.             <type>java.lang.Integer</type>  
  41.         </attribute>  
  42.         <attribute>  
  43.             <name>pageCount</name>  
  44.             <required>true</required>  
  45.             <rtexprvalue>true</rtexprvalue>  
  46.             <type>java.lang.Integer</type>  
  47.         </attribute>  
  48.         <attribute>  
  49.             <name>pageSize</name>  
  50.             <required>true</required>  
  51.             <rtexprvalue>true</rtexprvalue>  
  52.             <type>java.lang.Integer</type>  
  53.         </attribute>  
  54.     </tag>  
  55. </taglib>  

 

最后的一步就是在页面上显示查询结果和用标签显示分页信息

 

[xhtml] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s"%>  
  3. <%@ taglib uri="/WEB-INF/pagetag.tld" prefix="pt"%>  
  4. <%  
  5.     String path = request.getContextPath();  
  6.     String basePath = request.getScheme() + "://"  
  7.             + request.getServerName() + ":" + request.getServerPort()  
  8.             + path + "/";  
  9. %>  
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  11. <html>  
  12.     <head>  
  13.         <base href="<%=basePath%>">  
  14.         <title>My JSP 'mess.jsp' starting page</title>  
  15.         <meta http-equiv="pragma" content="no-cache">  
  16.         <meta http-equiv="cache-control" content="no-cache">  
  17.         <meta http-equiv="expires" content="0">  
  18.         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19.         <meta http-equiv="description" content="This is my page">  
  20.     </head>  
  21.     <body>  
  22. <div>  
  23.         <table border="1" style="width: 100%" align="center">  
  24.             <tr>  
  25.                 <td>  
  26.                     id  
  27.                 </td>  
  28.                 <td>  
  29.                     用户名  
  30.                 </td>  
  31.                 <td>  
  32.                     姓名  
  33.                 </td>  
  34.                 <td>  
  35.                     年龄  
  36.                 </td>  
  37.                 <td>  
  38.                     性别  
  39.                 </td>  
  40.                 <s:iterator id="user" value="#request.users">  
  41.                     <tr>  
  42.                         <td>  
  43.                             <s:property value="#user.id" />  
  44.                         </td>  
  45.                         <td>  
  46.                             <s:property value="#user.username" />  
  47.                         </td>  
  48.                         <td>  
  49.                             <s:property value="#user.realname" />  
  50.                         </td>  
  51.                         <td>  
  52.                             <s:property value="#user.age" />  
  53.                         </td>  
  54.                         <td>  
  55.                             <s:property value="#user.sex" />  
  56.                         </td>  
  57.                     </tr>  
  58.                 </s:iterator>  
  59.             </tr>  
  60.             <tr>  
  61.         </table>  
  62.     </div>  
  63.     <div style="width: 100%">  
  64.                   <pt:pageInfo pageCount="${pageBean.pageCount }"    
  65.                                              currPage="${pageBean.currPage }"   
  66.                                              param="currPage"   
  67.                                              path="${path}"  
  68.                                              totalPage="${pageBean.lastPage }"   
  69.                                              pageSize="${pageBean.pageSize }"   
  70.                                              totalSize="${pageBean.totalSize }"   
  71.                                              />         
  72.                                             
  73.                                    
  74. </div>  
  75.     </body>  
  76. </html>  

 

显示效果由于图片无法上传,所以也就贴不上来了!

上一篇:Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决)


下一篇:34_注解的定义与反射调用