예제
import lombok.Data;
@Data
public class DataEx {
private String name;
private int age;
}
@ModelAttribyte 적용 전
@Controller
public class ModelAttriuteTest {
@ResponseBody
@RequestMapping("/model-Attribute-v1")
public String modelAttributeV1(@RequestParam String name, @RequestParam int age) {
DataEx dataEx = new DataEx();
dataEx.setName(name);
dataEx.setAge(age);
log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
return "ok";
}
}
@ModelAttribyte 적용 후
@Controller
public class ModelAttriuteTest {
@ResponseBody
@RequestMapping("/model-Attribute-v1")
public String modelAttributeV1(@ModelAttribute HelloData helloData) {
log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
return "ok";
}
}
model.addAttribute(...)
를 사용해서 계속 넣어야 한다.@ModelAttribute
를 사용하면 @ModelAttribute("regions")
의 regions에서 반환한 값이 자동으로 모델에 담기게 되어 '컨트롤러를 호출할 때 해당 데이터가 항상 모델에 포함되는 것을 보장'해준다.예제
@ModelAttribute("regions")
public Map<String, String> regions() {
Map<String, String> regions = new LinkedHashMap<>();
regions.put("SEOUL", "서울");
regions.put("BUSAN", "부산");
regions.put("JEJU", "제주");
return regions;
}
-> regions()가 포함된 컨트롤러를 호출하면 모델에 이 데이터가 항상 포함된다.