< 1/8 > 형태에서 현재 페이지를 Format기반으로 출력하는데 전자정부프레임워크의 지원이 부족하여 실무적용이 어렵습니다.
- 작성자 :
- 이*규
- 작성일 :
- 2017-09-04 10:14:12
- 조회수 :
- 1,203
- 구분 :
- 모바일
- 진행상태 :
- 완료
Q
모바일 용으로 페이징은 < 1 2 3 4 5 > 이런 형태가 아니고 "1/8 >", "< 2/8 >", "< 3/8" 형태에서 새로 만들어 보았는데 Format 기반으로 전체 페이지 8 등을 나타내는데는 한계가 있어서 실무에 적용이 어렵습니다. 모바일용 다른 형태 페이징도 Format기반으로 동작이 가능하도록 {0}, {1} 기반 값치환을 확장해 주세요.
package maeili.cmmn.web;
...
public class EgovMobilePaginationRenderer extends AbstractPaginationRenderer {
public EgovMobilePaginationRenderer() {
super();
firstPageLabel = "";
previousPageLabel = "";
currentPageLabel = "";// 전체 페이지 건수와 모바일에 맞는 페이지 노출 처리 떄문에 나중에 지정된다.
otherPageLabel = "";
nextPageLabel = "";
lastPageLabel = "";
}
@Override
public String renderPagination(PaginationInfo paginationInfo,
String jsFunction) {
/* 만들어지는 html 소스는 아래와 흡사하다.
<a href="javascript:prevPage(${nowPage-1});" class="prev"><span><c:if test="${nowPage > 1}"><img src="/resources/mobile/images/common/btn_prev1.jpg" alt="이전"></c:if></span></a>
<p class="num">
<span class="c-blue">${nowPage}</span>
<span class="s">/</span>
<span class="t">${totPage}</span>
</p>
<a href="javascript:nextPage(${nowPage+1});" class="next"><span><c:if test="${nowPage < totPage}"><img src="/resources/mobile/images/common/btn_next1.jpg" alt="다음"></c:if></span></a>
*/
StringBuilder labelBuffer = new StringBuilder();
if (paginationInfo.getCurrentPageNo() > paginationInfo.getFirstPageNo()) {
labelBuffer.append("<a href=\"javascript:" + jsFunction + "({0} - 1);\" class=\"prev\"><span><img src=\"/resources/mobile/images/common/btn_prev1.jpg\" alt=\"이전\">");
} else {
// a, href태그를 남겨 우측 페이징 버튼이 없어서 퍼블이 망가지는 것을 막는다.
labelBuffer.append("<a href=\"#none\" class=\"prev\"><span>");
}
labelBuffer.append("</span></a>");
labelBuffer.append("<p class=\"num\"><span class=\"c-blue\">{0}</span><span class=\"s\">/</span><span class=\"t\">")
.append(paginationInfo.getTotalPageCount()).append("</span></p>");
if (paginationInfo.getCurrentPageNo() < paginationInfo.getLastPageNo()) {
labelBuffer.append("<a href=\"javascript:" + jsFunction + "({0} + 1);\" class=\"next\"><span><img src=\"/resources/mobile/images/common/btn_next1.jpg\" alt=\"다음\">");
} else {
// a, href태그를 남겨 좌측 페이징 버튼이 없어서 퍼블이 망가지는 것을 막는다.
labelBuffer.append("<a href=\"#none\" class=\"next\"><span>");
}
labelBuffer.append("</span></a>");
super.currentPageLabel = labelBuffer.toString();
return super.renderPagination(paginationInfo, jsFunction);
}
}
package maeili.cmmn.web;
...
public class EgovMobilePaginationRenderer extends AbstractPaginationRenderer {
public EgovMobilePaginationRenderer() {
super();
firstPageLabel = "";
previousPageLabel = "";
currentPageLabel = "";// 전체 페이지 건수와 모바일에 맞는 페이지 노출 처리 떄문에 나중에 지정된다.
otherPageLabel = "";
nextPageLabel = "";
lastPageLabel = "";
}
@Override
public String renderPagination(PaginationInfo paginationInfo,
String jsFunction) {
/* 만들어지는 html 소스는 아래와 흡사하다.
<a href="javascript:prevPage(${nowPage-1});" class="prev"><span><c:if test="${nowPage > 1}"><img src="/resources/mobile/images/common/btn_prev1.jpg" alt="이전"></c:if></span></a>
<p class="num">
<span class="c-blue">${nowPage}</span>
<span class="s">/</span>
<span class="t">${totPage}</span>
</p>
<a href="javascript:nextPage(${nowPage+1});" class="next"><span><c:if test="${nowPage < totPage}"><img src="/resources/mobile/images/common/btn_next1.jpg" alt="다음"></c:if></span></a>
*/
StringBuilder labelBuffer = new StringBuilder();
if (paginationInfo.getCurrentPageNo() > paginationInfo.getFirstPageNo()) {
labelBuffer.append("<a href=\"javascript:" + jsFunction + "({0} - 1);\" class=\"prev\"><span><img src=\"/resources/mobile/images/common/btn_prev1.jpg\" alt=\"이전\">");
} else {
// a, href태그를 남겨 우측 페이징 버튼이 없어서 퍼블이 망가지는 것을 막는다.
labelBuffer.append("<a href=\"#none\" class=\"prev\"><span>");
}
labelBuffer.append("</span></a>");
labelBuffer.append("<p class=\"num\"><span class=\"c-blue\">{0}</span><span class=\"s\">/</span><span class=\"t\">")
.append(paginationInfo.getTotalPageCount()).append("</span></p>");
if (paginationInfo.getCurrentPageNo() < paginationInfo.getLastPageNo()) {
labelBuffer.append("<a href=\"javascript:" + jsFunction + "({0} + 1);\" class=\"next\"><span><img src=\"/resources/mobile/images/common/btn_next1.jpg\" alt=\"다음\">");
} else {
// a, href태그를 남겨 좌측 페이징 버튼이 없어서 퍼블이 망가지는 것을 막는다.
labelBuffer.append("<a href=\"#none\" class=\"next\"><span>");
}
labelBuffer.append("</span></a>");
super.currentPageLabel = labelBuffer.toString();
return super.renderPagination(paginationInfo, jsFunction);
}
}
A
안녕하세요.
소중한 의견 감사합니다.
추후 업그레이드시 충분히 검토하도록 하겠습니다.
감사합니다.
소중한 의견 감사합니다.
추후 업그레이드시 충분히 검토하도록 하겠습니다.
감사합니다.