opencms 페이지 구현

5810 단어 htmlcmsjsp
자신 이 통용 되 는 페이지 를 썼 습 니 다. 페이지 가 있 는 페이지 가 이 페이지 를 도입 하고 몇 개의 인 자 를 입력 하면 됩 니 다.
페이지 코드 (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>

좋은 웹페이지 즐겨찾기