JSP文件顶部引用
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
tags文件是个目录,指向的可能是tld文件也可能是多个tag文件存在的目录,多个tag可以写在一个tld文件中,用<tag></tag>标识,也可以单独写在一个后缀名是tag的文件中。
下面我们讲一个写在tag文件中的例子
<%@tag pageEncoding="UTF-8" %>
<%@ attribute name="page" type="org.springframework.data.domain.Page" required="true" %>
<%@ attribute name="paginationSize" type="java.lang.Integer" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
int current = page.getNumber() + 1;
int begin = Math.max(1, current - paginationSize / 2);
int end = Math.min(begin + (paginationSize - 1), page.getTotalPages());
request.setAttribute("current", current);
request.setAttribute("begin", begin);
request.setAttribute("end", end);
%>
<div class="pagination">
<ul>
<% if (page.hasPreviousPage()) {%>
<li><a href="?page=1&sortName=${sortName}&sortOrder=${sortOrder}&${searchParams}"><<</a></li>
<li><a href="?page=${current-1}&sortName=${sortName}&sortOrder=${sortOrder}&${searchParams}"><</a></li>
<%} else {%>
<li class="disabled"><a href="#"><<</a></li>
<li class="disabled"><a href="#"><</a></li>
<%} %>
<c:forEach var="i" begin="${begin}" end="${end}">
<c:choose>
<c:when test="${i == current}">
<li class="active"><a
href="?page=${i}&sortName=${sortName}&sortOrder=${sortOrder}&${searchParams}">${i}</a></li>
</c:when>
<c:otherwise>
<li><a href="?page=${i}&sortName=${sortName}&sortOrder=${sortOrder}&${searchParams}">${i}</a></li>
</c:otherwise>
</c:choose>
</c:forEach>
<% if (page.hasNextPage()) {%>
<li><a href="?page=${current+1}&sortName=${sortName}&sortOrder=${sortOrder}&${searchParams}">></a></li>
<li><a href="?page=${page.totalPages}&sortName=${sortName}&sortOrder=${sortOrder}&${searchParams}">>></a>
</li>
<%} else {%>
<li class="disabled"><a href="#">></a></li>
<li class="disabled"><a href="#">>></a></li>
<%} %>
</ul>
</div>
在页面中
<tags:pagination page="${users}" paginationSize="20"/>