반응형
저번에는 페이징기능에 대해서 알아보았다 .
이번에는 간단한 검색기능을 알아보려고한다.
검색이라는 걸 검색했는데 데이터가 없다 .
우선 인터페이스인 BoardRepository를 추가해야 된다.
Page<Board> findByTitleContaining(String searchKeyword, Pageable pageable);
이렇게 추가해준다.
searchKeyword는 검색어를 pageable는 페이징에대한 정보를 받는다.
그다음 컨트롤러에 추가해주자
@GetMapping("/board/list")
public String boardList(Model model,
@PageableDefault(page = 0, size = 10, sort = "id", direction = Sort.Direction.DESC) Pageable pageable,
String searchKeyword) {
Page<Board> list = null;
if(searchKeyword == null) {
list = boardService.boardList(pageable);
}else {
list = boardService.boardSearchList(searchKeyword, pageable);
}
int nowPage = list.getPageable().getPageNumber() + 1;
int startPage = Math.max(nowPage - 4, 1);
int endPage = Math.min(nowPage + 5, list.getTotalPages());
model.addAttribute("list", list);
model.addAttribute("nowPage", nowPage);
model.addAttribute("startPage", startPage);
model.addAttribute("endPage", endPage);
return "boardlist";
}
우선 Page<T> 제네릭으로 Board를 해주고 null을 표현해준다.
다음에 if문으로 검색어가 오지 않았을때 페이징처리만해주고
검색어가 왔을 경우 검색어 + 페이징처리를 해준다.
<th:block th:each="page : ${#numbers.sequence(startPage, endPage)}">
<a th:if="${page != nowPage}" th:href="@{/board/list(page = ${page - 1}, searchKeyword = ${param.searchKeyword})}" th:text="${page}"></a>
<strong th:if="${page == nowPage}" th:text="${page}" style="color : red"></strong>
</th:block>
<form th:action="@{/board/list}" method="get">
<input type="text" name="searchKeyword">
<button type="submit">검색</button>
</form>
${param.name}
으로 받을수 있다.
param 은 파라미터값으로 넘어온 데이터를 뜻하고
name 은 그 데이터중 name이라는 이름을 갖는 데이터의 값을 가져오겠다는 뜻이다.
뷰를 보면 form태그를 통해 검색어를 컨트롤러에 태운다.
그다음에 searchKeyword로 ${param}으로 잡아서 넣어준다.
이렇게 CRUD + 페이징 + 검색까지 기본적인 공부는 끝난거같다.
다음에는 JS를 공부하고 리엑트를 공부해서
스프링부트 + 리엑트 프로젝트를 해보자
https://github.com/MoonSeokHyun
반응형
'Spring Boot > 기초 게시판제작 + maria DB' 카테고리의 다른 글
JPA를 사용한 게시판 만들기(7) 페이징처리 {타임리프,스프링부트} (0) | 2022.05.11 |
---|---|
JPA를 사용한 게시판 만들기(6) 메시지띄우기 {타임리프,스프링부트} (0) | 2022.05.10 |
JPA를 사용한 게시판 만들기(5) 수정처리 {타임리프,스프링부트} (0) | 2022.05.10 |
JPA를 사용한 게시판 만들기(4) 삭제처리 {타임리프,스프링부트} (0) | 2022.05.06 |
JPA를 사용한 게시판 만들기(3) 상세보기작업 {타임리프,스프링부트} (0) | 2022.05.05 |