opencms 페이지 구현
페이지 코드 (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 라벨 을 사용 합 니 다. 주로 두 개의 인자 입 니 다.
페이지 크기: 각 페이지 의 개수
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: content info 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: 총 항목 수 기록
페이지 크기: 각 페이지 의 개수
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>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다른 사람의 웹사이트 편집: contenteditable 및 designMode그래도 우리가 그렇게 할 수 있다고 생각하는 것은 멋진 일입니다. 제가 강조하고 싶었던 일종의 관련 API가 실제로 몇 개 있기 때문에 오늘 그것을 가져왔습니다. contenteditable는 "true" 값이 할당...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.