1 분 소요

공지사항 페이징

3.service처리

  • Noticeservice.java
	List<NoticeVO> getNoticePaging(Criteria cri);
	public int getNoticeTotal(Criteria cri);

메서드를 선언한다.

  • Noticeservicelmpl.java
	// 페이징 적용
	public List<NoticeVO> getNoticePaging(Criteria cri) {

		return noticemapper.getNoticePaging(cri);
	}

	public int getNoticeTotal(Criteria cri) {

		return noticemapper.getNoticeTotal(cri);
	}

오버라이딩하여 구현 한다

 

4.Controller 처리

@RequestMapping(value = "/notice-list")
	public String noticeListForm(Model model, Criteria cri) {

		System.out.println("공지사항목록 페이지 페이징..");

Criteria를 부여 해준다. criteria 데이터를 이용하여 공지사항 목록 데이터를 반환하는 쿼리를 실행하게 된다.

@RequestMapping(value = "/notice-list")
	public String noticeListForm(Model model, Criteria cri) {

		System.out.println("공지사항목록 페이지 페이징..");

		model.addAttribute("list", noticeservice.getNoticePaging(cri));

total의 값을 얻기 위해 noticeservice의 메소드를 호출한 후 해당 값과 Critera 클래스 데이터를 인자 값으로 부여하여 PageDTO를 인스턴스화 한다.



		int total = noticeservice.getNoticeTotal(cri);

		PageMakeDTO pageMake = new PageMakeDTO(cri, total);

		model.addAttribute("pageMake", pageMake);

		return "admin/notice/notice-list";

	}

pageMaker 속성명에 인스턴스 화한 PageDTO 데이터를 저장시킨다.

model에 담은 값을 view에서 사용한다.

5.view 처리

 <form action='notice-list' method="get" id="moveForm">
		<input type="hidden" name="pageNum" value="${pageMake.cri.pageNum}">
		<input type="hidden" name="amount" value="${pageMake.cri.amount}">
		<input type="hidden" name="keyWord" value="${pageMake.cri.keyWord}">
		<input type="hidden" name="searchType" value="${pageMake.cri.searchType}">
   </form>

페이지 이동 후 서버로부터 전달받은 “pageMaker” 데이터에 있는 pageNum, amount, keyword 값이 기본적으로 저장되도록 value 속성을 부여 하였다.

<div class="notice-footer w-100">
		<div class="indexer align-right">
			<span>${pageMake.cri.pageNum}/${pageMake.realEnd} pages</span>
			<ul id="pageInfo" class="notice-page pager">
				<!-- 맨앞으로 버튼 -->
				<c:if test="${pageMake.prev}">
					<li class="next pageInfo_btn"><a
						href="?pageNum=${pageMake.realStart}&amount=5"><i
							class="lni lni-angle-double-left"></i></a></li>
				</c:if>
				<!-- 이전페이지 버튼 -->
				<c:if test="${pageMake.prev}">
					<li class="prev pageInfo_btn"><a
						href="?pageNum=${pageMake.startPage-1}&amount=5"><i
							class="lni lni-chevron-left"></i></a></li>
				</c:if>
				<!-- 각 번호 페이지 버튼 -->
				<c:forEach var="num" begin="${pageMake.startPage}"
					end="${pageMake.endPage}">
					<li
						class="pageInfo_btn ${pageMake.cri.pageNum == num ? 'activePage':'' }"><a
						href="?pageNum=${num}&amount=5">${num}</a></li>
				</c:forEach>
				<!-- 다음페이지 버튼 -->
				<c:if test="${pageMake.next}">
					<li class="next pageInfo_btn"><a
						href="?pageNum=${pageMake.endPage+1}&amount=5"><i
							class="lni lni-chevron-right"></i></a></li>
				</c:if>
				<!-- 맨끝으로 버튼 -->
				<c:if test="${pageMake.next}">
					<li class="next pageInfo_btn"><a
						href="?pageNum=${pageMake.realEnd}&amount=5"><i
							class="lni lni-angle-double-right"></i></a></li>
				</c:if>
			</ul>
			<button class="write">
				<a href="<c:url value='notice-register'/>">글쓰기</a>
			</button>
		</div>
	</div>

${pageMaker.cri.pageNum == num?”activePage”:”” ‘을 작성한 이유는 현재 페이지일 경우 class 속성 값이 “pageMaker_btn active”되는데 해당 버튼에 현재 페이지임을 알 수 있도록 css 설정을 해주기 위함이다.

댓글남기기