점프 투 스프링부트 댓글 페이징 구현 질문
안녕하세요. 질문있습니다!
답변 페이징 구현하려고 아래와 같이 수정을 했는데요
Pageable pageable = PageRequest.of(page, 5) 값을 줬는데도 5개가 아닌 전체가 출력이되네요.
어느부분을 손봐야 될까요 ?
아래는 코드 내용입니다.
AnswerRepository 추가
public interface AnswerRepository extends JpaRepository <Answer, Integer>{
Page<Answer> findAllByQuestion(Question question, Pageable pageable);
}
AnswerService 추가
public Page<Answer> getList(Question question, int page){
List<Sort.Order> sorts = new ArrayList<>();
sorts.add(Sort.Order.desc("createDate"));
Pageable pageable = PageRequest.of(page, 5);
return this.answerRepository.findAllByQuestion(question, pageable);
}
QuestionController 수정
@GetMapping(value = "/detail/{id}")
public String detail(Model model, @PathVariable("id") Integer id, AnswerForm answerForm,
@RequestParam(value="page", defaultValue="0") int page) {
/*댓글페이징*/
Question question = this.questionService.getQuestion(id); //QuestionService의 getQuestion 메서드를 호출하여 Question 객체를 템플릿에 전달
Page<Answer> paging = this.answerService.getList(question, page);
model.addAttribute("question", question);
model.addAttribute("paging", paging);
/*이전글다음글번호와 제목을 html에서 불러올수있게 model.addAttribute() 작성*/
QuestionPage questionPage = questionPageRepository.findByPages(id);
model.addAttribute("prevID", questionPage.getPREVID());
model.addAttribute("prevSub", questionPage.getPREV_SUB());
model.addAttribute("nextID", questionPage.getNEXTID());
model.addAttribute("nextSub", questionPage.getNEXT_SUB());
return "question_detail";
}
question_detail.html 페이징 추가
~
<!--답변 반복 끝-->
<!-- 답변 페이징처리 시작 -->
<div th:if="${!paging.isEmpty()}">
<ul class="pagination justify-content-center">
<li class="page-item" th:classappend="${!paging.hasPrevious} ? 'disabled'">
<a class="page-link"
th:href="@{|?page=${paging.number-1}|}">
<span>이전</span>
</a>
</li>
<li th:each="page: ${#numbers.sequence(0, paging.totalPages-1)}"
th:if="${page >= paging.number-5 and page <= paging.number+5}"
th:classappend="${page == paging.number} ? 'active'"
class="page-item">
<a th:text="${page}" class="page-link" th:href="@{|?page=${page}|}"></a>
</li>
<li class="page-item" th:classappend="${!paging.hasNext} ? 'disabled'">
<a class="page-link" th:href="@{|?page=${paging.number+1}|}">
<span>다음</span>
</a>
</li>
</ul>
</div>
<!-- 페이징처리 끝 -->
<!--답변 작성-->
<form th:action="@{|/answer/create/${question.id}|}"
~
kurosaki 님 582
2023년 2월 7일 4:54 오후
+1
question_detail.html 의 답변 반복부분이 안 보이네요. 거기서 paging 객체를 사용했는지 확인해 보세요.
-
박응용님,
2023년 2월 7일 7:28 오후
추천
,
대댓글

@박응용님
답변 반복시작 부분에서
<div class="card my-3" th:each="answer : ${question.answerList}">을
<div class="card my-3" th:each="answer : ${paging}"> 로 수정하니까 구현이 잘되네요 !
해결 되었어요 ! 감사합니다.
-
kurosaki님,
2023년 2월 8일 3:34 오후
추천
,
대댓글