티스토리 뷰
728x90
반응형
1. 게시판 페이징 구현
(1) 페이징 기능 구현
- 게시판 페이지에는 이전, 페이지 번호, 이후를 넣고, 게시글 페이지에는 이전, 이후 의 페이징 기능을 넣을 것이다.
- Service > PagenationService 클래스를 생성한다.
- 숫자 리스트를 받아 뷰에서 그려주는 방식으로 구성한다.
- 현재 페이지, 전체 페이지 번호(즉 마지막 번호)를 리스트로 받는다.
- 페이지네이션 bar 크기를 상수로 정하고 현재 bar의 길이를 return 하도록 한다.
(2) 테스트
- 현재 페이지 번호와 총 페이지 수가 주어졌을 때, 페이징 바 리스트를 생성하도록 한다.
- @ParameterizedTest : 동일한 메소드를 여러 번 테스트하는 방식
- 유닛 테스트의 각각의 제목을 포맷에 맞춰 보여줄 수 있다.
- Index는 현재 번호, 입력값의 순서대로 번호가 주어진다.
- 예를 들어 “[{index}] 현재 페이지: {0}, 총 페이지: {1} => {2}” 로 작성할 수 있다.
- @MethodSource : 테스트 입력 데이터
- actual에는 페이지네이션 바의 숫자들을 담은 리스트를 받아 전달하고, actual이 expected와 동일한지 확인한다.
- 테스트에 쓰일 메소드는 static으로 만드는데, 이름은 테스트 메소드와 동일하게 작성하면 자동으로 인식한다.
- Stream.of를 사용하여 테스트할 arguments들을 넣어주면 된다.
- @SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = Void.class): 부트테스트의 무게를 줄일 수 있다.
- 추가
- 스팩의 명세를 코드에 드러내기 위해 테스트 코드에서 페이지네이션의 길이를 확인하는 내용을 넣어줄 수 있다.
- 페이지네이션에 관한 테스트 외에도 페이지네이션을 사용하는 곳에 paginationService에 대한 테스트를 간단하게 추가해주어야 한다.
(3) 구현
- currentPageNumber와 totalPages를 사용해서 startNumber와 endNumber을 계산해서 리스트를 return해주면 된다.
- startNuber는 바 길이를 고려하여 Math.max(currentPageNumber – (bar_length/2),0) 로 계산한다.
- endNumber는 Math.min(startNumber + bar_lengh, totalPages) 로 계산한다.
(4) 뷰
- 기존에 구현한 내용에서 id를 추가한다.
- Xml을 통해 Thymeleaf 문법으로 작성한다.
- Previous와 next를 남기고 가운데 숫자 부분을 th:each를 통해 치환하며 페이지 번호를 추가하도록 구현한다.
- Prev는 현재 페이지 -1, next는 현재 페이지 + 1로 구현한다.
- 이 때 링크는 th:href로 작성된다.
- 현재 페이지는 disabled 설정을 추가로 해준다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 2. 게시판 서비스 만들기 - 해시태그 검색 구현 (0) | 2023.09.10 |
---|---|
[Java Project] Part 2. 게시판 서비스 만들기 - 게시판 정렬 (0) | 2023.09.09 |
[Java Project] Part 2. 게시판 서비스 만들기 - 게시글 및 로그인 페이지 기능 구현 (0) | 2023.09.07 |
[Java Project] Part 2. 게시판 서비스 만들기 - 게시판 페이지 기능 구현 (0) | 2023.09.06 |
[Java Project] Part 2. 게시판 서비스 만들기 - 로그인 페이지 기능 테스트 및 게시판 페이지 기능 구현 (0) | 2023.09.05 |
댓글