@ModelAttribute

InOut·2023년 5월 12일
1
post-thumbnail

@ModelAttribute란?

  • 적용 대상을 Model의 속성으로 자동 추가해주는 애너테이션
  • 반환 타입 또는 컨트롤러 메서드의 매개변수에 적용 가능




* 메서드의 매개변수에 적용한 경우

@RequestMapping("/getYoil")
//public String main(@ModelAttribute("myDate") Mydate date, Model m) {
public String main(@ModelAttribute Mydate date, Model m) {	// 위와 동일
				// 타입의 첫번째를 소문자로 한것을 key로해서 모델에 객체 주소가 담김
	//...
    char yoil = getYoil(date); // date를 요일로 바꿔주는 메서드
    
    // m.addAttribute("myDate", date); --> @modelAttribute 사용시 
    									직접 모델에 담을 필요가 없다
    m.addAttribute("yoil", yoil);
    
    return "yoil";

- 참고로 매개변수에 적용할 때 @ModelAttribute 생략해도 된다. 생략해서 써도 매개변수 타입의 첫번째를 소문자로 한 값이 키로 되고 date가 저장된다.


* 반환타입에 적용한 경우

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

// 반환타입에 적용하면, 이 함수의 호출 결과를 model에 저장.
// ex) 이 함수의 결과가 'c'일 경우 모델에 key=yoil, value='c'가 저장됨.

추가설명

컨트롤러에 매개변수에 붙일 수 애너테이션

  • 1 . @RequestParam
  • 2 . @ModelAttribute
  1. 타입이 String, 기본형일 경우 - @RequestParam이 생략되어있다 보면된다.
  2. 타입이 참조형일 경우 - @ModelAttribute가 생략되어있다 보면 된다.
profile
개발새발

0개의 댓글

관련 채용 정보