PageMaker
페이지 정보
본문
package web.dto;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
import lombok.Data;
@Data
public class PageMaker {
private int totalCount; // 총 게시물 수
private int startPage; // 시작 페이지
private int endPage; // 끝 페이지
private boolean prev; // 이전 링크
private boolean next; // 다음 링크
private int displayPageNum = 3; // 블럭 갯수
private Criteria cri; // limit 사용
private void calcData() {
endPage = (int) (Math.ceil(cri.getPage() / (double)displayPageNum) * displayPageNum);
startPage = (endPage - displayPageNum) + 1;
// 마지막 블럭일 경우 계산 처리
int tempEndPage = (int) (Math.ceil(totalCount / (double) cri.getPerPageNum()));
if (endPage > tempEndPage) {
endPage = tempEndPage;
}
prev = startPage == 1 ? false : true; //시작 페이지가 1이 아니라면 true
next = endPage * cri.getPerPageNum() >= totalCount ? false : true;
//endPage = 10 , perPageNum = 10 , totalCount = 101 이라면 next = true 되어야 한다.
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
//위 메소드 호출
calcData();
}
// get방식 - url 주소 변수 값 - 처리 용이하게..
public String makeQuery(int page) {
UriComponents uriComponents = UriComponentsBuilder.newInstance()
.queryParam("page", page)
.queryParam("perPageNum", cri.getPerPageNum())
.queryParam("searchType", cri.getSearchType())
//.queryParam("keyword", cri.getKeyword())
.queryParam("keyword", encoding(cri.getKeyword()))
.build();
return uriComponents.toUriString();
}
// get 방식으로 값을 넘겼을때 한글이 깨질 경우 처리 추가
private String encoding(String keyword) {
if (keyword == null || keyword.trim().length() == 0) {
return "";
}
try {
return URLEncoder.encode(keyword, "UTF-8");
} catch (UnsupportedEncodingException e) {
return "";
}
}
}
- 이전글Criteria 24.06.10
- 다음글BoardController 24.06.10
댓글목록
등록된 댓글이 없습니다.