스프링 PageableDefault 사용하기

 

어렵다 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://www.programcreek.com/java-api-examples/index.php?api=org.springframework.data.web.PageableDefault

 

http://millky.com/@origoni/post/1171?language=ko_kr

 

Spring Data JPA - Reference Documentation

http://docs.spring.io/spring-data/jpa/docs/1.7.2.RELEASE/reference/html/#_handlermethodargumentresolvers_for_pageable_and_sort

 

+ Recent posts