思路:
1.用actionlink和jquery.ajax访问页面类;
2.用jquery做分页条(只是个分页条功能);
3.用block接受返回的结果集(用loop)。
代码如下:
1.tml代码:--Index.tml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <t:MainLayout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <head> <script type="text/javascript" src="jquery-1.3.1.js"></script> <script type="text/javascript" src="pagenation.js"></script> <script> <!--// var j = jQuery.noConflict(); //--> </script> </head> <body> <!-- 搜索结果search_list start--> <div id="search_list" > <!-- 分页start --> <div class="brand_page"> <div class="page" id="page"></div> </div> <!-- 分页end --> <!-- 结果列表start--> <div id="search_final"> <t:zone t:id="zone"> <t:block t:id="block"> <t:loop t:source="goodslist" t:value="goods"> <!-- 一个商品start--> <div id="search_line"> <div id="search_top"> <img src="../common/images/200812311331299124.jpg" style="cursor:pointer;" /> </div> <div id="search_bottom"> <div id="search_single"> <table class="search_text1"> <tr> <td>${goods.goodsdescript}</td> <td>${goods.goodsname}</td> </tr> <tr> <td colspan="2">${goods.goodsno}</td> </tr> <tr> <td colspan="2">零售价格:<span class="purple">${goods.goodsid}</span> </td> </tr> </table> </div> <div class="search_text2">${goods.goodsid}</div> </div> </div> <!-- 一个商品end--> </t:loop> <input type="hidden" value="${totalPage}" id="total"/> </t:block> <input type="hidden" value="${totalPage}" id="total"/> <t:loop t:source="goodslist" t:value="goods"> <!-- 一个商品start--> <div id="search_line"> <div id="search_top"> <img src="../common/images/200812311331299124.jpg" style="cursor:pointer;"/> </div> <div id="search_bottom"> <div id="search_single"> <table class="search_text1"> <tr> <td>${goods.goodsdescript}</td> <td>${goods.goodsname}</td> </tr> <tr> <td colspan="2">${goods.goodsno}</td> </tr> <tr> <td colspan="2">零售价格:<span class="purple">${goods.goodsid}</span> </td> </tr> </table> </div> <div class="search_text2">${goods.goodsid}</div> </div> </div> <!-- 一个商品end--> </t:loop> </t:zone> <t:actionlink t:id="cx" t:zone="zone"><input type="button" id="cxdate" style="display:none"/></t:actionlink> <t:actionlink t:id="getpageNum"></t:actionlink> </div> <!-- 结果列表end--> <!-- 翻页 start--> <div class="brand_page"> <div class="page" id="page1"></div> </div> <!-- 翻页 end--> </div> <!-- 搜索结果search_list end--> </body> <script language="JavaScript"> <!--// //生成分页条 totalpage = j("#total").val(); pageN(arr); //分页查询方法 function resultListByPage(index){ j.ajax({ url:"/Index.getpageNum/"+index, success:function(msg){ j("#cxdate").click(); totalpage = j("#total").val(); }, error:function(msg){ alert("error"); } }); } //--> </script> </t:MainLayout>
2.页面类代码:---Index.java
public class Index { @Inject private IBrand service; @Inject private Block block; @Persist private Goods goods; public Goods getGoods() { return goods; } public void setGoods(Goods goods) { this.goods = goods; } public Block getBlock() { return block; } public void setBlock(Block block) { this.block = block; } //当前页数 @Persist private Long curpage; public Long getCurpage() { return curpage; } public void setCurpage(Long curpage) { this.curpage = curpage; } //每页显示条数 private long perpage = 8; //总页数 @Persist private long totalPage; public long getTotalPage() throws Exception { long totalnum = (service.getTotal(3)); totalPage = totalnum%perpage==0 ? totalnum/perpage : totalnum/perpage+1; return totalPage; } public void setTotalPage(long totalPage){ this.totalPage = totalPage; } @Persist private List<Goods> goodslist; //结果集 public List<Goods> getGoodslist() throws Exception{ if(curpage==null || curpage==0){ curpage=new Long(1); } long start = (curpage-1)*perpage; long end = curpage*perpage; goodslist = service.getGoodsTest(3,start,end); return goodslist; } public void setGoodslist(List<Goods> goodslist) { this.goodslist = goodslist; } //获得当前页数 void onActionFromGetpageNum(long curPage){ curpage = curPage; } //商品列表---测试分页 Block onActionFromCx() throws Exception{ return block; } }
3.JS代码:---pagenation.js
网上下的一个jqeury插件,稍微修改了一下,可以自己换个。
/** * 分页导航条 * 分页条上最多显示9个页数,当总页数小于9时,有几页就显示几个 * @param fnName 翻页时执行的函数名(传入的第一个参数必须是“当前页码”)) * @param fnNameParams fnName函数的参数,数组形式(比如:var arr = new Array(); arr[0] = 1;arr[1] = "hello") * @param pagetotal 总页码 * @param showID 页面显示分页导航条的div ID */ function pageNavigation(fnName, fnNameParams, pagetotal, showID) { var fnParam = new Array(); //如果这样fnParam = fnNameParams;两个都指向同一引用 for(var i = 0 ; i < fnNameParams.length; i++) fnParam[i] = fnNameParams[i]; var pageIndex = parseInt(fnNameParams[0]);//当前页 // 无记录 if (pagetotal == 0) { jQuery('#' + showID).empty();//清空翻页导航条 return; } // 分页 var front = pageIndex - 4;// 前面一截 var back = pageIndex + 4; // 后面一截 jQuery('#' + showID).empty(); //清空翻页导航条 // 红色字体显示当前页 var str = "<font color = 'black'>" + pageIndex +"</font>"; jQuery('#' + showID).append(str); // 斜线"/" jQuery('#' + showID).append("/"); // 蓝色字体显示总页数 var str = "<font color = 'blue'>" + pagetotal +"</font>"; jQuery('#' + showID).append(str); // 首页, 上一页 if (pageIndex == 1) { jQuery('#' + showID).append("<a href='javascript:void(0)' disabled='true' >首页</a><a href='javascript:void(0)' disabled='true'>上一页</a>"); //front = 0; //back = pageIndex + 8; } else { fnParam[0] = 1 ; var fn = fnName + "(" + fnParam + ")"; //组装执行的函数 var str = "<a alt='首页' href = 'javascript:" + fn + "'>首页</a>";//创建连接 jQuery('#' + showID).append(str); fnParam[0] = pageIndex - 1 ; var fn = fnName + "(" + fnParam + ")"; //组装执行函数 var str = "<a alt='上一页' href = 'javascript:" + fn + "'>上一页</a>";//创建连接 jQuery('#' + showID).append(str); } if (pagetotal == 1) { jQuery('#' + showID).append("<a href='javascript:void(0)'>1</a>"); } // 如果当前页是5,前面一截就是1234,后面一截就是6789 if (pagetotal > 1) { var tempBack = pagetotal; var tempFront = 1; //如果当前页数小于5,也显示9个,如,pageIndex=2,前面一截就是1,后面一截就是3456789 if(pageIndex<=4){ back = pageIndex+8-(pageIndex-1); } //如果当前页数大于(总页数-3),也显示9个,如,pageIndex=8,pagetotal=10,前面一截就是12345678,后面一截就是10 if(pageIndex>=(pagetotal-4)){ front =pageIndex-(8-(pagetotal-pageIndex)); } if (back < pagetotal){ tempBack = back; } if (front > 1){ tempFront = front; } for (var i = tempFront; i <= tempBack; i++) { if (pageIndex == i) { var str = "<a class='currentChecked' href='javascript:void(0)'>" + i + "</a>"; jQuery('#' + showID).append(str); } else { fnParam[0] = i; var fn = fnName + "(" + fnParam + ")"; //组装执行的函数 var str = "<a href = 'javascript:" + fn + "'>" + i + "</a>";//创建连接 jQuery('#' + showID).append(str); } } } // 下一页, 尾页 if (pageIndex == pagetotal) { jQuery('#' + showID).append("<a href='javascript:void(0)' disabled='true'>下一页</a><a href='javascript:void(0)' disabled='true' >尾页</a>"); } else { fnParam[0] = pageIndex + 1 ; var fn = fnName + "(" + fnParam + ")"; //组装执行的函数 var str = "<a href = 'javascript:" + fn + "'>下一页</a>";//创建连接 jQuery('#' + showID).append(str); fnParam[0] = pagetotal ; var fn = fnName + "(" + fnParam + ")"; //组装执行的函数 var str = "<a href = 'javascript:" + fn + "'>尾页</a>";//创建连接 jQuery('#' + showID).append(str); } } //调用分页函数 function pageN(){ var arr = new Array(); for(var i = 0 ; i < pageN.arguments.length ; i++){ arr[i] = pageN.arguments[i]; } pageNavigation('pageN',arr,totalpage,'page'); pageNavigation('pageN',arr,totalpage,'page1'); resultListByPage(arr);//点击后做的分页查询操作,arr表示当前页数 } var arr = new Array(); arr[0] = 1; var totalpage = 0;
4.jquery-1.3.1.js,自己去网上下一个哈。