wicket之实现IDataProvider接口,只查询当前页数据

1.html文件
Html代码   收藏代码
  1. <html>  
  2.   <head>  
  3.     <link href="styles/wicket.css" rel="stylesheet" type="text/css">  
  4.     <link href="styles/office.css" rel="stylesheet" type="text/css">  
  5.   </head>  
  6. <body>  
  7.     <h3>DataView+ListDataProvider例子</h3>  
  8.     <form wicket:id ="form">  
  9.         <span wicket:id ="navigator">这里显示分页操作</span>  
  10.         <table width="100%" border="0" cellspacing="1" cellpadding="0" id="baseCodeSetting">  
  11.           <thead>   
  12.             <tr>  
  13.                 <th align="center">姓名</th>  
  14.                 <th align="center" width="50">性别</th>  
  15.                 <th align="center">职务</th>  
  16.                 <th align="center">联系电话</th>  
  17.                 <th align="center">QQ</th>  
  18.                 <th align="center">E-mail</th>  
  19.                 <th align="center">博客地址</th>  
  20.                 <th align="center" width="50">操作</th>  
  21.             </tr>  
  22.           </thead>  
  23.           <tbody>  
  24.             <tr wicket:id="cards">  
  25.                 <td align="center" wicket:id ="name">title </td>  
  26.                 <td align="center" wicket:id ="sex">author</td>  
  27.                 <td align="center" wicket:id ="duty">duty</td>  
  28.                 <td align="center" wicket:id ="tel">tel</td>  
  29.                 <td align="center" wicket:id ="qq">qq</td>  
  30.                 <td align="center" wicket:id ="e_mail">e_mail</td>  
  31.                 <td align="center"><a wicket:id ="blog">blog</a></td>  
  32.                 <td align="center"><a wicket:id="edit">edit</a></td>  
  33.             </tr>  
  34.           </tbody>  
  35.         </table >  
  36.     </form>  
  37. </body>  
  38. </html>  

2.java文件
Java代码   收藏代码
  1. package com.logcd.wicket.cards;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.ArrayList;  
  5. import java.util.Collections;  
  6. import java.util.Iterator;  
  7. import java.util.List;  
  8.   
  9. import org.apache.wicket.markup.html.WebPage;  
  10. import org.apache.wicket.markup.html.basic.Label;  
  11. import org.apache.wicket.markup.html.form.Form;  
  12. import org.apache.wicket.markup.html.link.ExternalLink;  
  13. import org.apache.wicket.markup.html.link.Link;  
  14. import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;  
  15. import org.apache.wicket.markup.repeater.Item;  
  16. import org.apache.wicket.markup.repeater.data.DataView;  
  17. import org.apache.wicket.markup.repeater.data.IDataProvider;  
  18. import org.apache.wicket.model.IModel;  
  19. import org.apache.wicket.model.Model;  
  20. import org.apache.wicket.spring.injection.annot.SpringBean;  
  21.   
  22. import com.logcd.web.bo.KingCards;  
  23. import com.logcd.web.bo.dao.KingCardsDao;  
  24.   
  25. @SuppressWarnings({ "unchecked""serial" })  
  26. public class DataViewPage extends WebPage{  
  27.       
  28.     @SpringBean(name = "kingCardsDao")  
  29.     private KingCardsDao kingCardsDao;  
  30.   
  31.     public DataViewPage() {  
  32.         super();  
  33.         final DataView listView = new DataView("cards"new KingCardsDataProvider(), 2) {  
  34.             protected void populateItem(Item item) {  
  35.                 final KingCards card = (KingCards) item.getModelObject();  
  36.                 item.add(new Label("name", card.getName()));  
  37.                 item.add(new Label("sex", card.getSex()));  
  38.                 item.add(new Label("duty", card.getDuty()));  
  39.                 item.add(new Label("tel", card.getTel()));  
  40.                 item.add(new Label("e_mail", card.getEMail()));  
  41.                 item.add(new Label("qq", card.getQq()));  
  42.                 item.add(new ExternalLink("blog", card.getBlog(),card.getBlog()));  
  43.                 item.add(new Link("edit") {  
  44.                     public void onClick() {  
  45.                     }  
  46.                 });  
  47.             }  
  48.         };  
  49.         Form form = new Form("form") {  
  50.             protected void onSubmit() {  
  51.             }  
  52.         };  
  53.         this.add(form);  
  54.         form.add(listView);  
  55.         form.add(new PagingNavigator("navigator", listView));  
  56.     }  
  57.       
  58.     /** 
  59.      * 提供分页数据的内部类 
  60.      * @author logcd 
  61.      */  
  62.     public class KingCardsDataProvider implements IDataProvider{  
  63.         private static final long serialVersionUID = 1L;  
  64.         private List list = Collections.synchronizedList(new ArrayList());  
  65.           
  66.         public Iterator iterator(int firstItem, int itemsPerPage) {  
  67.             Integer pageNo=firstItem/itemsPerPage;//查询第几页  
  68.             StringBuilder hql = new StringBuilder();  
  69.             hql.append("from KingCards cards where cards.Type=0");  
  70.             list=kingCardsDao.findOnePageObjects(hql.toString(), pageNo, itemsPerPage);  
  71.             return list.iterator();  
  72.         }  
  73.   
  74.         public IModel model(Object obj) {  
  75.             return new Model((Serializable) obj);  
  76.         }  
  77.   
  78.         public int size() {  
  79.             return kingCardsDao.findRowCount("select count(*) from KingCards cards where cards.Type=0");  
  80.         }  
  81.   
  82.         public void detach() {  
  83.              this.list.clear();  
  84.         }  
  85.     }  
  86. }  

3.dao中的两个方法
Java代码   收藏代码
  1. /** 
  2.  * 根据Hql,返回结果集中的一页 
  3.  * @param hql 
  4.  * @param pageNo         第几页 
  5.  * @param itemsPerPage   每页记录条数 
  6.  * @return 
  7.  */  
  8. @SuppressWarnings("unchecked")  
  9. public List<T> findOnePageObjects(final String hql,final Integer pageNo,final Integer itemsPerPage){  
  10.     return getHibernateTemplate().executeFind(new HibernateCallback() {  
  11.         public Object doInHibernate(Session session) throws HibernateException, SQLException {  
  12.             return session.createQuery(hql).setFirstResult(pageNo*itemsPerPage).setMaxResults(itemsPerPage).list();  
  13.         }  
  14.     });  
  15. }  
  16. /** 
  17.  * 根据自己的制定的hql来查询返回的所有记录的总数 
  18.  *  
  19.  * @param hql 
  20.  * @return 
  21.  */  
  22. public int findRowCount(final String hql) {  
  23.     return ((Long) getHibernateTemplate().execute(new HibernateCallback() {  
  24.         public Object doInHibernate(Session session) throws HibernateException, SQLException {  
  25.             return session.createQuery(hql).iterate().next();  
  26.         }  
  27.   
  28.     })).intValue();  


转自: http://log-cd.iteye.com/blog/336472

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值