Spring

[Spring] @ModelAttribute / 두가지 컬렉션을 View로 보내기 / @RequestMapping 어노테이션보다 먼저 실행되는 메서드 만들기

bkuk 2023. 3. 6. 22:59

 

두가지 기능을 가진 @ModelAttribute

@ModelAttribute를 Controller 메서드의 매개변수로 선언된 Command 객체의 이름을 변경할 때 사용할 수 있다고 배웠다. 추가로, View(JSP)에서 사용할 데이터를 설정하는 용도로도 사용할 수 있다.

@ModelAttribute가 설정된 메서드는 @RequestMapping 어노테이션이 적용된 메서드보다 먼저 호출된다. 그리고 @ModelAttribute 메서드 실행 결과로 리턴된 객체는 자동으로 Model에 저장된다. 따라서 리턴된 객체를 View 페이지에서 사용할 수 있다.

 

두개의 컬렉션을 리턴

예를 들면, 다양한 검색 조건이 저장된 Map을 리턴해준다고 하자.

아래 코드와 같이 총 2개의 컬렉션을 사용할 수 있다.

@ModelAttribute("map")
public Map searchConditionMap() {
	Map conditionMap = new HashMap();
    conditionMap.put( "1", "최신순" );
    conditionMap.put( "2", "오래된 순" );
    conditionMap.put( "3", "추천순" );
    conditionMap.put( "4", "인기순" );
    return conditionMap;
}

@RequestMapping("/getBoardList.do")
public String getBordList(BoardVo vo, BoardDAO dao, Model model) {
	model.addAttribute( "boardList", dao.getBoardList(vo));
    return "getBoardList.jsp";
}