어렵다 JPA ㅠㅠ...
잘은 모르겠지만 소스 파악하고 수정해야될 게 있어 인터넷에서 검색한거 까먹을까봐 정리해본다
Pageable 을 쓸 때, 사이즈는 얼마, 정렬은 어떻게 등을 기본으로 잡아주기 위해 @PageableDefault 를 사용한다
근데 화면단에서 동적으로 10개씩 보여주기, 20개씩 보여주기 등 하고 싶으면 어떻게 해야 하나?
결론부터 말하자면...
http://localhost:8080/persons?page=1&size=20
이런식으로 파라미터 page, size, sort 를 쓰면 된다.
그리고 화면단에서 현재 페이지 숫자와 로우수도 바로 알 수 있다.
${result.size} - 현재 페이지 로우 수 (ex, 10, 20, 30, ...)
${result.name} - 현재 페이지 (ex. 0, 1, 2, ...)
<JAVA>
1
2
3
4
5
6
7
8
9
10
11
12
13 |
@RequestMapping("/test.do")
public String findAllTest(@PageableDefault(size=20, sort="name",direction = Sort.Direction.ASC) Pageable pageable,
@ModelAttribute("searchVO") SearchVO searchVO,
ModelMap model) {
model.addAttribute("result", testService.getTestList(pageable, searchVO));
return "/test.jsp";
} |
cs |
<Script>
1
2
3
4
5
6
7
8
9 |
//Display rows 수 변경
function changeRowsPerPage(rowsPerPage, currentPage){
location.href="${rc.contextPath}/test.do?"
+"page="+currentPage
+"&size="+rowsPerPage
+"&searchType="+$("#searchType").val()
+"&searchValue="+$("#searchValue").val()
+"&checkAll="+$("#checkAll").val();
} |
cs |
<HTML>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
<div class="btn-group" role="group">
<button data-toggle="dropdown" class="btn btn-xs btn-primary">
${result.size}개씩 보기<i class="ace-icon fa fa-angle-down icon-on-right bigger-110"></i>
</button>
<ul class="dropdown-menu dropdown-menu-right dropdown-125 dropdown-lighter dropdown-close dropdown-caret">
<li <c:if test="${result.size eq '10'}">class="active disabled"</c:if> >
<a href="javascript:;" onclick="changeRowsPerPage('10', '${result.number}');" <c:if test="${result.size eq '10'}">class="blue"</c:if> >
<i class="ace-icon fa fa-caret-right bigger-110 <c:if test="${result.size ne '10'}">invisible</c:if> "> </i>
10개씩 보기
</a>
</li>
<li <c:if test="${result.size eq '20'}">class="active disabled"</c:if> >
<a href="javascript:;" onclick="changeRowsPerPage('20', '${result.number}');" <c:if test="${result.size eq '20'}">class="blue"</c:if> >
<i class="ace-icon fa fa-caret-right bigger-110 <c:if test="${result.size ne '20'}">invisible</c:if> "> </i>
20개씩 보기</a>
</li>
<li <c:if test="${result.size eq '30'}">class="active disabled"</c:if> >
<a href="javascript:;" onclick="changeRowsPerPage('30', '${result.number}')" <c:if test="${result.size eq '30'}">class="blue"</c:if> >
<i class="ace-icon fa fa-caret-right bigger-110 <c:if test="${result.size ne '30'}">invisible</c:if> "> </i>
30개씩 보기
</a>
</li>
</ul>
</div> |
cs |
참고:
Java Code Examples for org.springframework.data.web.PageableDefault
http://millky.com/@origoni/post/1171?language=ko_kr
Spring Data JPA - Reference Documentation