[Spring] @ModelAttribute

2024. 7. 19. 19:16WebBack/Spring

@ModelAttribute(컨트롤 메서드의 매개변수)

@ModelAttribute는 적용 대상을 Model의 속성으로 자동 추가해주는 애너테이션이다. myDate가 key로 date의 주소값이 value로 저장된다. 

public String main(@ModelAttribute MyDate date, Model m) {}

 

따라서 m.addAttribute("myDate", date)를 따로 명령하지 않아도 된다. 본래는 @ModelAttribute("키 이름")MyDate date로 적어야 하지만 생략하면 MyDate의 앞글자가 소문자가 된 값을 key로 사용한다. 

@ModelAttribute(반환 타입)

아래처럼 반환 타입에도 적용할 수 있다. @ModelAttribute("키 이름")를 적으면 된다. 아래는 yoil이 key값이 되고, 호출 결과가 value가 된다. 따라서 m.addAttribute("yoil", yoil)을 따로 명령하지 않아도 된다. 

private @modelAttribute("yoil") char getYoil(MyDate date) {
	return getYoil(date.getYear(), date.getMonth(), date.getDay());
}

 

RequestParam은 기본형, String일 때, ModelAttribute는 참조형일 때 사용되고 생략되어 있다. 둘은 같이 사용할 수는 없다. RequestParam은 ${param.파라미터 이름}으로 사용이 가능해서 굳이 model에 저장할 필요가 없다.