Published 2022. 12. 27. 20:00

 

SearchVO.java

package egovframework.fusion.board.vo;

public class SearchVO {
	
	/* 계산되는 아이들 */
	private Integer startPage; // 시작 페이지
	private Integer endPage; // 마지막 페이지
	private Integer realEnd; // 전체 마지막 페이지
	private Integer totalRecordCnt; // 총 게시물 수
	private boolean prev; // 이전 페이지 존재 유무
	private boolean next; // 다음 페이지 존재 유무
	private Integer firstIdx; // 해당 페이지에 보여질 시작 게시글 번호
	private Integer lastIdx; // 해당 페이지에 보여질 마지막 게시글 번호
	private Integer pageNum = 5;
	
	/* 받아오는 아이들 */
	private Integer curPageNo = 1; // 현재 페이지 번호
	private Integer postNum = 10; // 한 페이지당 보여줄 게시물 수
	private String keyword; // 키워드 검색
	private String keywordCategory = "제목"; // 키워드 검색 카테고리 (제목, 내용...)
	
	// 계산되는 아이들 세팅
	public void pageSetting () {
		// 시작 페이지
		this.startPage = (((int) Math.ceil((float)this.curPageNo / (float)this.pageNum)) - 1) * this.pageNum + 1;
		// 마지막 페이지 -> 1~10: endPage=10, 11~20: endPage=20.... 
		this.endPage = this.startPage + this.pageNum - 1; // 올림, 10: 한 화면에 보여질 페이지 개수
		System.out.println("endPage = " + endPage);
		
		System.out.println("startPage = " + startPage);
		// 전체 마지막 페이지
		this.realEnd = (int) (Math.ceil((this.totalRecordCnt * 1.0) / this.postNum));
		
		// 전체 마지막 페이지가 화면에 보이는 마지막 페이지보다 작은 경우
		if (this.realEnd < this.endPage) {
			this.endPage = this.realEnd;
		}
		
		// 이전 페이지 존재 유무 판단
		this.prev = this.startPage > 1;
		
		// 다음 페이지 존재 유무 판단
		this.next = this.endPage < this.realEnd;
		
		// 해당 페이지 마지막 게시글 번호
		this.lastIdx = this.curPageNo * this.postNum;
		// 해당 페이지 시작 게시글 번호
		this.firstIdx = this.lastIdx - this.postNum + 1;
		
		System.out.println("lastIdx = " + lastIdx);
		System.out.println("firstIdx = " + firstIdx);
	}
	
	public Integer getStartPage() {
		return startPage;
	}


	public Integer getEndPage() {
		return endPage;
	}


	public Integer getRealEnd() {
		return realEnd;
	}

	public Integer getTotalRecordCnt() {
		return totalRecordCnt;
	}

	public void setTotalRecordCnt(Integer totalRecordCnt) {
		this.totalRecordCnt = totalRecordCnt;
	}

	public boolean isPrev() {
		return prev;
	}

	public boolean isNext() {
		return next;
	}


	public Integer getFirstIdx() {
		return firstIdx;
	}


	public Integer getLastIdx() {
		return lastIdx;
	}


	public Integer getCurPageNo() {
		return curPageNo;
	}

	public void setCurPageNo(Integer curPageNo) {
		this.curPageNo = curPageNo;
	}

	public Integer getPostNum() {
		return postNum;
	}

	public void setPostNum(Integer postNum) {
		this.postNum = postNum;
	}

	public String getKeyword() {
		return keyword;
	}

	public void setKeyword(String keyword) {
		this.keyword = keyword;
	}

	public String getKeywordCategory() {
		return keywordCategory;
	}

	public void setKeywordCategory(String keywordCategory) {
		this.keywordCategory = keywordCategory;
	}

	@Override
	public String toString() {
		return "PageInfo [startPage=" + startPage + ", endPage=" + endPage + ", realEnd=" + realEnd
				+ ", totalRecordCnt=" + totalRecordCnt + ", prev=" + prev + ", next=" + next + ", firstIdx=" + firstIdx
				+ ", lastIdx=" + lastIdx + ", curPageNo=" + curPageNo + ", postNum=" + postNum + ", keyword=" + keyword
				+ ", keywordCategory=" + keywordCategory + "]";
	}
	
	
}

 

 

BoardController.java

	/*
	 * 게시판 리스트 페이징
	 */
	@RequestMapping(value = "/board/boardList.do", method = RequestMethod.GET)
	public String boardList(@ModelAttribute SearchVO searchVO, BoardVO boardVO, Model model) {

		// 게시물 총 개수 조회
		searchVO.setTotalRecordCnt(boardService.getBoardListTotCnt(searchVO));		
		searchVO.pageSetting();		
		//model.addAttribute("searchVO", searchVO);
		
		// 게시글 조회
		model.addAttribute("boardList", boardService.getBoardList(searchVO));
		
		// 공지글 조회
		model.addAttribute("noticeList", boardService.getNoticeList());

		return "views/board/boardList";
	}

 

반응형
복사했습니다!