自己写了一个通用的分页页面,需要有分页的页面引入这个分页页面,并传入几个参数就可以了.
分页代码(JSP代码),样式也写在本页中:
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<style>
.news_page{
margin-top:10px;
text-align:right;
}
.news_page a{
border:#ccc 1px solid;
padding:2px 5px;
margin:0 2px;
}
.news_page a:hover{
background-color:#FFF8ED;
}
.news_page .current{
background-color:#EBEAEA;}
</style>
<%!
private static final int getParam(ServletRequest request, String name, int defval){
String param = request.getParameter(name);
if(param==null){
param = String.valueOf(request.getAttribute(name));
}
int value = defval;
if (param != null) {
try {
value = Integer.parseInt(param);
}catch (NumberFormatException ignore) {
}
}
return value;
}
%>
<%
int showNum = 7;//单数,保证中间位置
int showOffset = (showNum - 1)/2;//当前页数向左右两边的便宜量
int total = getParam(request,"total",0);
if(total < 0)
total = 0;
int pageIndex = getParam(request,"pageIndex",1);
if(pageIndex < 1)
pageIndex = 1;
int pageSize = getParam(request,"pageSize",10);
if(pageSize < 1)
pageSize = 10;
int pageTotal = 0;
if(total%pageSize == 0)
pageTotal = total/pageSize;
else
pageTotal = total/pageSize + 1;
int pageBegin = 0;
int pageEnd = 0;
if(pageTotal <= showNum){
pageBegin = 1;
pageEnd = pageTotal;
}else{
int offsetBegin = 0;
int begin = pageIndex - showOffset;
if(begin > 0)
pageBegin = begin;
else{
pageBegin = 1;
offsetBegin = 1 - begin;
}
int offsetEnd = 0;
int end = pageIndex + showOffset;
if(end <= pageTotal)
pageEnd = end;
else{
pageEnd = pageTotal;
offsetEnd = end - pageTotal;
}
pageBegin = pageBegin - offsetEnd > 0 ? pageBegin - offsetEnd : 1;
pageEnd = pageEnd + offsetBegin <= pageTotal ? pageEnd + offsetBegin : pageTotal;
}
%>
<div class="news_page">
<%if(pageIndex > 1){ %>
<a href="<cms:link>${param.pageUrl}?pageIndex=<%=pageIndex-1 %>&pageSize=<%=pageSize %></cms:link>">上一页</a>
<%if(pageBegin > 1){ %><a href="<cms:link>${param.pageUrl}?pageIndex=1&pageSize=<%=pageSize %></cms:link>">1</a><%} %>
<%} %>
<%for(int i = pageBegin; i<=pageEnd;i++){ %>
<%if(i == pageIndex) {%><a href="#this" class="current"><%=i %></a><%}%>
<%if(i != pageIndex) {%><a href="<cms:link>${param.pageUrl}?pageIndex=<%=i %>&pageSize=<%=pageSize %></cms:link>"><%=i %></a><%}%>
<%} %>
<%if(pageIndex < pageTotal){ %>
<%if(pageEnd < pageTotal){ %><a href="<cms:link>${param.pageUrl}?pageIndex=<%=pageTotal %>&pageSize=<%=pageSize %></cms:link>"><%=pageTotal %></a><%} %>
<a href="<cms:link>${param.pageUrl}?pageIndex=<%=pageIndex+1 %>&pageSize=<%=pageSize %></cms:link>">下一页</a>
<%} %>
</div>
页面调用一共3部分:
1.获得链接带过来的参数
2.把参数传到cms:contentload标签中,读取对应位置和条数的列表
3.引入分页页面,把参数传到分页页面中去
代码1.获得链接带过来的参数,使用JSTL标签,主要是两个参数.
pageSize:每页的条数
pageIndex:当前的页数
<c:set var="pageSize" value="15" />
<c:if test="${not empty param.pageSize}"><c:set var="pageSize" value="${param.pageSize}" /></c:if>
<c:set var="pageIndex" value="1" />
<c:if test="${not empty param.pageSize}"><c:set var="pageIndex" value="${param.pageIndex}" /></c:if>
代码2.把参数传到cms:contentload标签中,读取对应位置和条数的列表.
要通过<cms:contentinfo var="info"/>来获得总条数,以便下面传给分页页面
<cms:contentload collector="allInFolderPriorityDateAsc" param="/exhibition/prospects/prospects_%(number).html|gmprospect" editable="true" pageIndex="${pageIndex}" pageSize="${pageSize}">
<cms:contentinfo var="info"/>
..................
...............
</cms:contentload>
代码3.引入分页页面,把参数传到分页页面中去
total:记录总条数
pageSize:每页的条数
pageIndex:当前的页数
pageUrl:分页的链接
<cms:include file="%(link.weak:/system/modules/xxx/elements/page.jsp)" >
<cms:param name="total">${info.resultSize }</cms:param>
<cms:param name="pageIndex">${pageIndex}</cms:param>
<cms:param name="pageSize">${pageSize}</cms:param>
<cms:param name="pageUrl">/exhibition/prospects/index.html</cms:param>
</cms:include>
分享到:
相关推荐
opencms guide
opencms 中文网提供的java api 文档包
OpenCms是一个专业级、开源Java CMS(内容管理系统),由Alkacon公司发起和维护,OpenCms完全基于Java和XML技术实现,内容维护方便、直观,类型定义简单、快速,基于Jsp的模板机制强大、灵活,OpenCms扩展机制可以很好...
<%@ page session=”false” import=”java.text.SimpleDateFormat,java.util...@ taglib prefix=”cms” uri=”http://www.opencms.org/taglib/cms”%> <html> <head> <title>测试新闻
opencms用户指南+源码 opencms用户指南+源码 opencms用户指南+源码
OpenCms创建网站过程图解——献给OpenCms的初学者们,一起学习吧
Update your existing OpenCms installation to version 9.5.2 with the easy to use upgrade wizard. OpenCms 7.x 和8.x 升级到OpenCms 9.5.2版本安装向导。
Opencms 中文网原创,请下载支持,欢迎转发,请注明来源Opencms 中文网博客
OpenCMS入门指南OpenCMS入门指南OpenCMS入门指南OpenCMS入门指南OpenCMS入门指南
主要讲述在opencms下apache和tomcat配置,去掉两个opencms
packt_用开源项目快速建站实践丛书
opencms二次开发
OpenCms是一个专业级别的开源网站内容管理系统。OpenCms可以非常容易的帮助建立和管理复杂的网站而无需专业的HTML知识。当使用一个复杂的模板引擎来规划站点,它提供一个类似于我们熟知的office应用的所见即所得编辑...
opencms 9.0.1 汉化资源包,少量部分汉化不完全
OpenCms是一个专业级别的开源网站内容管理系统。OpenCms可以非常容易的帮助建立和管理复杂的网站而无需专业的HTML知识。当使用一个复杂的模板引擎来规划站点,它提供一个类似于我们熟知的office应用的所见即所得编辑...
朗华opencms ofbiz 结合包
OPENCMS google地图继承模块
org.opencms.locale.zh_8.0.1.zip(注意,有些网站转载汉化包后会将原zip格式转变成rar格式,导致汉化模块安装失败,请安装前做好检查,或可以直接从http://www.opencmschina.comg下载。) 使用说明: 1、...
opencms-10.0.1源码,此源码可发布到服务器,实现网站的热部署等