Toggle theme
문제를 잘 정의하는 것은 문제를 절반 해결한 것이다. - 2023.12
사용자 도구
Toggle theme
로그인
사이트 도구
검색
도구
문서 보기
이전 판
PDF로 내보내기
Fold/unfold all
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
현재 위치:
start
»
wiki
»
miscellaneous
»
egov_페이징_커스텀
wiki:miscellaneous:egov_페이징_커스텀
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Egov 페이징 커스텀 ====== <WRAP left notice 80%> * description : Egov 페이징 커스텀 * author : 오션 * email : shlim@repia.com * lastupdate : 2022-09-07 Wed </WRAP> <WRAP clear></WRAP> \\ ====== Egov 페이징 커스텀 ====== 1. Java Resources > Libraries > Maven Dependencies > egovframework.rte.ptl.mvc-3.9.0.jar > egovframework.rte.ptl.mvc > tags.ui > pagination> AbstractPaginationRenderer.class 반드시 참조\\ ==== AbstractPaginationRenderer.class ==== <code java> package egovframework.rte.ptl.mvc.tags.ui.pagination; import java.text.MessageFormat; /** * AbstractPaginationRenderer.java * <p/><b>NOTE:</b><pre> 인터페이스 PaginationRenderer의 구현 추상클래스. * 기본적인 페이징 기능이 구현되어 있으며, 화면에서 아래와 같이 display 된다. * * [처음][이전] 1 2 3 4 5 6 7 8 [다음][마지막] * * 클래스 변수들이 각 element와 매핑이 되는데, * firstPageLabel = [처음] * previousPageLabel = [이전] * currentPageLabel = 현재 페이지 번호 * otherPageLabel = 현재 페이지를 제외한 페이지 번호 * nextPageLabel = [다음] * lastPageLabel = [마지막] * * 클래스 변수값을 AbstractPaginationRenderer를 상속받은 하위 클래스에서 주게 되면, * 페이징 포맷만 프로젝트 UI에 맞춰 커스터마이징 할 수 있다. * 자세한 사항은 개발자 메뉴얼의 개발프레임워크 실행환경/화면처리/MVC/View/Pagination Tag를 참고하라. * </pre> */ public abstract class AbstractPaginationRenderer implements PaginationRenderer { protected String firstPageLabel; protected String previousPageLabel; protected String currentPageLabel; protected String otherPageLabel; protected String nextPageLabel; protected String lastPageLabel; public String renderPagination(PaginationInfo paginationInfo, String jsFunction) { StringBuffer strBuff = new StringBuffer(); int firstPageNo = paginationInfo.getFirstPageNo(); int firstPageNoOnPageList = paginationInfo.getFirstPageNoOnPageList(); int totalPageCount = paginationInfo.getTotalPageCount(); int pageSize = paginationInfo.getPageSize(); int lastPageNoOnPageList = paginationInfo.getLastPageNoOnPageList(); int currentPageNo = paginationInfo.getCurrentPageNo(); int lastPageNo = paginationInfo.getLastPageNo(); if (totalPageCount > pageSize) { if (firstPageNoOnPageList > pageSize) { strBuff.append(MessageFormat.format(firstPageLabel, new Object[] { jsFunction, Integer.toString(firstPageNo) })); strBuff.append(MessageFormat.format(previousPageLabel, new Object[] { jsFunction, Integer.toString(firstPageNoOnPageList - 1) })); } else { strBuff.append(MessageFormat.format(firstPageLabel, new Object[] { jsFunction, Integer.toString(firstPageNo) })); strBuff.append(MessageFormat.format(previousPageLabel, new Object[] { jsFunction, Integer.toString(firstPageNo) })); } } for (int i = firstPageNoOnPageList; i <= lastPageNoOnPageList; i++) { if (i == currentPageNo) { strBuff.append(MessageFormat.format(currentPageLabel, new Object[] { Integer.toString(i) })); } else { strBuff.append(MessageFormat.format(otherPageLabel, new Object[] { jsFunction, Integer.toString(i), Integer.toString(i) })); } } if (totalPageCount > pageSize) { if (lastPageNoOnPageList < totalPageCount) { strBuff.append(MessageFormat.format(nextPageLabel, new Object[] { jsFunction, Integer.toString(firstPageNoOnPageList + pageSize) })); strBuff.append(MessageFormat.format(lastPageLabel, new Object[] { jsFunction, Integer.toString(lastPageNo) })); } else { strBuff.append(MessageFormat.format(nextPageLabel, new Object[] { jsFunction, Integer.toString(lastPageNo) })); strBuff.append(MessageFormat.format(lastPageLabel, new Object[] { jsFunction, Integer.toString(lastPageNo) })); } } return strBuff.toString(); } } </code> \\ ==== PaginationInfo.class ==== \\ totalPageCount : 전체 페이지 개수\\ ''**totalRecordCount**'' : 필수 필드 값, 전체 게시물 개수\\ ''**recordCountPerPage**'' : 필수 필드 값, 한 페이지 당 표시되는 게시물 개수\\ <code java> // 전체 페이지 개수 = ((전체 게시물 개수 -1) / 한 페이지 당 표시되는 게시물 개수) + 1 // totalPageCount = ((totalRecordCount - 1) / recordCountPerPage) + 1; public int getTotalPageCount() { totalPageCount = ((getTotalRecordCount() - 1) / getRecordCountPerPage()) + 1; return totalPageCount; } </code> \\ firstPageNoOnPageList : 페이징 번호 표시 Bar에 표시되는 첫 번째 페이지 번호\\ ''**currentPageNo**'' : 필수 필드 값, 페이징 번호 표시 Bar에서 클릭하여 현재 보여지는 페이지 번호\\ ''**pageSize**'' : 필수 필드 값, 페이징 번호 표시 Bar에 표시되는 페이지 번호들의 개수\\ <code java> // 페이징 Bar의 첫 번째 페이지 번호 = ((현재 페이지 번호 - 1) / 페이징 Bar의 번호들의 개수) * 페이징 Bar의 번호들의 개수 + 1; // firstPageNoOnPageList = ((currentPageNo - 1) / pageSize ) * pageSize + 1; public int getFirstPageNoOnPageList() { firstPageNoOnPageList = ((getCurrentPageNo() - 1) / getPageSize()) * getPageSize() + 1; return firstPageNoOnPageList; } </code> \\ lastPageNoOnPageList : 페이징 번호 표시 Bar에 표시되는 마지막 페이지 번호\\ <code java> public int getLastPageNoOnPageList() { lastPageNoOnPageList = getFirstPageNoOnPageList() + getPageSize() - 1; if (lastPageNoOnPageList > getTotalPageCount()) { lastPageNoOnPageList = getTotalPageCount(); } return lastPageNoOnPageList; } </code> ==== Ref LInk ==== [[https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:view:paginationtag|egovframework:rte:ptl:view:paginationtag-페이징처리]] \\ {{tag> 오션 Egov 페이징 커스텀}}
/volume1/web/dokuwiki/data/pages/wiki/miscellaneous/egov_페이징_커스텀.txt
· 마지막으로 수정됨: 2023/01/13 18:44 (바깥 편집)
문서 도구
문서 보기
이전 판
역링크
PDF로 내보내기
Fold/unfold all
맨 위로