Let's go inside

this blog is deprecated as a result of laziness.
posts - 59, comments - 2, trackbacks - 0, articles - 0

(原) pager-taglib 体验

Posted on 2006-08-08 22:33 Earth 阅读(2587) 评论(0)  编辑  收藏 所属分类: Java

javaeye辗转到aichan的blog再到官网, 最后到google上搜资料。。。

一、准备
把pager-taglib.jar放到lib目录下(仅此足亦,完全没必要改web.xml什么的,还有官方war包中的东西都可以不要)
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %>

然后是一个JSP,一个DispatchAction,DAO, Service什么就不用说了。最近在研究SSH框架,损失了不少脑细胞。

二、pg:pager,核心的设置都在这里,覆盖整个页面

<pg:pager items="${requestScope.totalRows}" url="/myblog/blog.do?method=list"
这样传递参数不对,应该写成:
 <pg:pager items="${requestScope.totalRows}" url="/myblog/blog.do" maxIndexPages="5">
  <pg:param name="method" value="list" />

一般每页大小是在配置或常量文件中指定的,我使用的是load-on-demand的方式
在页面中没有指定maxPageItems,只指定了maxIndexPages=5表示分页时下面会现1 2 3 4 5供你跳转。
如果把鼠标放在页码比如2上面,会发现url后面多了一个pager.offset=10的参数,这样我就可以在DispatchAction中从request中取得最重要 的offset参数, 非常棒!

当我跳转到第2页时,url变成了,http://localhost:8080/myblog/blog.do?method=list&pager.offset=10
页面上虽有分页标签但无任何数据。我后来把pager 的 isOffSet设置为true就可以了。

三、pg:item,这个非常简单(用在输出数据的部分,放在循环语句里)

logic:iterate + bean:write的写法

 <logic:iterate id="blog" name="blogs" scope="request" type="com.earth.myblog.data.bo.Blog">
  <pg:item>
     <tr>
       <td>
   <bean:write name="blog" property="id" />

我不知道大家都用什么来遍历集合,我最喜欢用logic:present + c:forEach, 太喜欢EL!
  <logic:present name="blogs" scope="request">
 <c:forEach items="${blogs}" var="blog">
           <pg:item>
      <tr>
  <td>
   <c:out value="${blog.id}"></c:out>

其实我也是学了一阵子JSF,然后发现JSF页面全部标签#{bean.var}, 没有java代码用起来非常方便,回头来用struts就忍不住用标签。。

四、pg:index, (上一页,下一页,第一,最后,跳转到)

 <pg:index>
  <pg:first>
   <a href="<%=pageUrl%>">[ 第一页 ]</a>
  </pg:first>

  <pg:prev>
   <a href="<%=pageUrl%>">[ 上一页 ]</a>
  </pg:prev>

  <pg:pages>
   <a href="<%=pageUrl%>"><%=pageNumber%></a>
  </pg:pages>

才发现这部分内容与具体应用无关!
是完全可以重用的部分,直接拷贝过来就行了,其中用到的两个变量 <%=pageUrl%> <%=pageNumber%> 不用自己定义! 。
 public ActionForward list(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  String offset = request.getParameter("pager.offset");
  int iOffSet = 0;
  if (StringUtils.isNotEmpty(offset)) {
   iOffSet = Integer.parseInt(offset);
  }
  List blogs = this.blogService.getBlogList(iOffSet, 0);
  int totalRows = this.blogService.getBlogListCount();
  
  request.setAttribute("totalRows",totalRows);
  request.setAttribute("blogs", blogs);
  return mapping.findForward("blogManage");
 }

参考资料:
http://jsptags.com/tags/navigation/pager/pager-taglib-2.0.html


只有注册用户登录后才能发表评论。


网站导航: