pagerTaglib

组件准备

pager-taglib-2.0.war

自动解压到web服务器中

pager-taglib-2.0

 

 http://localhost:8080/pager-taglib-2.0/index.html 进行访问 查看例子和文档

pager-taglib.jar jar包引入项目

组件简单应用

创建一个jsp页面 引入

<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>

export 导出参数

pageNumber 也是导出参数 输出的时候不能这样写

<c:if test="${pageNumber eq pageNumber}"></c:if>

可以把导出参数重命名的方式pageNumber重新命名为currentPageNumber

每页显示maxPageItems="30" 30条记录请看offset

maxIndexPage=25 显示25个页码

<pg:pager items="1001" maxPageItems="30" maxIndexPages="25" export="currentPageNumber=pageNumber">
  <pg:first>
    <a href="${pageUrl}">首页</a>
  </pg:first>
  <pg:prev>
    <a href="${pageUrl}">前页</a>
  </pg:prev>
  <pg:pages>
  <c:choose>
    <c:when test="${currentPageNumber eq pageNumber}">
      <font color="red">${pageNumber }</font>
    </c:when>
         <c:otherwise>
              <a href="${pageUrl }">${pageNumber}</a>
       </c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl}">下页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}">尾页</a>
</pg:last>
</pg:pager>

 

 

输出

首页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 下页 尾页

 分装到项目中

将列表页面中分页部分封装到一个common/pager.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<script type="text/javascript">
function selectPagesize(field){
//取到输出参数$pageUrl
window.location = document.getElementById("firstPage").href + "&pagesize="+field.value;
}
</script>
<pg:pager url="${param.url}" items="${total}" maxPageItems="${pagesize}" maxIndexPages="15" export="currentPageNumber=pageNumber">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="33%">
<div align="left">
<span class="STYLE22">&nbsp;&nbsp;&nbsp;&nbsp;共有<strong> ${total}</strong> 条记录,
当前第<strong> ${currentPageNumber}</strong> 页,共 <strong>${pageNumber }</strong> 页</span>
</div>
</td>
<td width="67%" align=right vAlign="center" noWrap>
<pg:param name="title"/>
<pg:first>
<a id="firstPage" href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl}">前页</a>
</pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font>
</c:when>
<c:otherwise>
<a href="${pageUrl }">${pageNumber}</a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl}">下页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}">尾页</a>
</pg:last>
<select name="pagesize" οnchange="selectPagesize(this)" >
<c:forEach begin="5" end="50" step="5" var="i">
<option value="${i}"
<c:if test="${i eq pagesize}">selected</c:if>
>${i}</option>
</c:forEach>
</select>
</td>
</tr>
</table>
</pg:pager>

列表页面加载

<!-- 分页组件 -->
<jsp:include page="/backend/common/pager.jsp">
  <jsp:param name="url" value="SearchArticlesServlet"/>
  <jsp:param name="params" value="title,source,content"/>
</jsp:include>

 为了解决pagerTaglib中文乱码问题

当我们在页面中输入中文,那么这个浏览器可以自动按照编码转换为%..这种就是浏览器自动转换,为什么没有按照UTF-8帮我们转换呢如果是转正确的毕竟是开源的工具会有一些bug,所以我们要修改一下pagerTaglib的源码 当然pagerTaglib默认使用的系统编码是gbk编码那么如果页面我们使用的是gbk编码那么这个问题就会隐藏发现不了我们现在使用的是UTF-8这个问题就呈现出来了。

当我们部署到应用服务器上

classes里面放置的是那些servlet和util工具类 classess是类路径的根目录 编译到这里面都会通过web应用程序被加载上去  lib里面也是类路径的一部分

classes这个目录会先于lib目录被加载 这个意思就是讲我在class里面有一个类然后在lib里面某个包里面有那个类相同的包相同的类名,相同的包相同的类名导致加载的是classess里面的就基于这样一个最基本的原理

项目中创建一个源代码目录把pager-src.jar中的源代码拷贝进去

 

 对应列表页面中<pg:pager 

这个类里面有各种各样的参数 我们修改开源工具的时候真的无需全面的了解他然后在测试一下

name = java.net.URLEncoder.encode(name);
value = java.net.URLEncoder.encode(value);

 如果编码正确就会得到正确的解释 这个方法已经被禁止使用了 这个方法他会使用系统默认的编码来对这些东西进行编码 在我们系统中他会使用中文操作系统进行编码,实际上我们页面是utf-8这就是问题所在  页面是gbk的传到后台后台认为是utf-8 中间编码不正确了

修改

name = java.net.URLEncoder.encode(name,"UTF-8");
value = java.net.URLEncoder.encode(value,"UTF-8");

name = java.net.URLEncoder.encode(name,"UTF-8");

页面里面的参数交给pagerTaglib的时候  taglib负责把这些参数附加到url后面  所以他就负责把这些参数进行编码,然后附加到url后面在这种情况下我们要指定正确的编码

 上面这种方法不够通用  如果页面将来换成了GBK编码了 那么我们还要再次修改页面编码吗肯定不能这样所以要构造一个通用的方案

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

pageEncoding="UTF-8"是页面本身的编码  charset=UTF-8"这是页面里面的响应编码

name = java.net.URLEncoder.encode(name,pageContext.getResponse().getCharacterEncoding());//获得页面响应的编码

 

转载于:https://www.cnblogs.com/oldfish711/p/8427992.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值