BackEnd/Spring

[Spring]게시글 검색

Hojung7 2024. 10. 14. 22:24

[html]

 <!-- 검색창 -->
       <!-- action 주소는 목록 조회 주소와 똑같이 사용 -->
      <form th:action="@{{code}(code=${boardCode})}" method="get" id="boardSearch">

        <select name="key" id="searchKey">
          <option value="t">제목</option>
          <option value="c">내용</option>
          <option value="tc">제목+내용</option>
          <option value="w">작성자</option>
        </select>

        <input type="text" name="query" id="searchQuery" placeholder="검색어를 입력해주세요.">

        <button>검색</button>
        <!-- 검색 버튼 누를 시 제출되는 값 : key, query -->
      </form>

 

cp : 현재 조회하려는 목록의 페이지 번호 (필수 아님, 없으면 1)]

 

[Controller]

@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("board")
public class BoardController {

	private final BoardService service;
	
	/** 게시글 목록 조회
	 * @param boardCode : 게시판 종류 번호
	 * @param cp : 현재 조회하려는 목록의 페이지 번호
	 * 						 (필수 아님, 없으면 1)
	 * @param model : forward 시 데이터 전달하는 용도의 객체(request)
	 */
	@GetMapping("{boardCode:[0-9]+}")
	public String selectBoardList(
		@PathVariable("boardCode") int boardCode,
		@RequestParam(value = "cp", required = false, defaultValue = "1") int cp,
		Model model,
		@RequestParam Map<String, Object> paramMap) {
		
		log.debug("paramMap : {}", paramMap);
		
		Map<String, Object> map = null;
		
		// 검색이 아닌 경우 == 일반 목록 조회
		if(paramMap.get("key") == null) {
			// 서비스 호출 후 결과 반환 받기
			// - 목록 조회인데 Map으로 반환 받는 이유?
			//  -> 서비스에서 여러 결과를 만들어 내야되는데
			//     메서드는 반환을 1개만 할 수 있기 때문에
			//     Map으로 묶어서 반환 받을 예정
			map = service.selectBoardList(boardCode, cp);
		
		} else { // 검색한 경우
			// paramMap에 key, query 담겨 있음
			map = service.selectSearchList(boardCode, cp, paramMap);
			
		}
		
		// map에 묶여있는 값 풀어놓기
		List<Board> boardList = (List<Board>)map.get("boardList");
		Pagination pagination = (Pagination)map.get("pagination");
		
		// 정상 조회 되었는지 log 확인
		// for(Board b : boardList) log.debug(b.toString());
		// log.debug(pagination.toString());
		
		model.addAttribute("boardList", boardList);
		model.addAttribute("pagination", pagination);
		
		return "board/boardList";
	}

'BackEnd > Spring' 카테고리의 다른 글

[Spring] 알림 보내기  (0) 2024.10.17
[Spring]예외처리  (0) 2024.10.15
[spring]인터셉터(Interceptor)  (0) 2024.10.14
[Spring]댓글 등록/삭제/등록  (0) 2024.10.11
[Spring]Spring Boot 프로젝트, 파일 구조 파악  (0) 2024.10.10