적용 대상을 Model의 속성으로 자동 추가해주는 애너테이션
반환 타입 또는 컨트롤러 메서드의 매개변수에 적용 가능
key값을 생략하면, 타입의 첫글자를 소문자로해서 key로 함.
@RequestMapping("/getYoilMVC5")
//메서드 매개변수 앞에 @ModelAttribute
//public String main(@ModelAttribute MyDate date, Model model) 아래와 동일
public String main(@ModelAttribute("myDate") MyDate date, Model model) throws IOException
//메서드 반환타입 앞에 @ModelAttribute
private @ModelAttribute("yoil") char getYoil(MyDate date) {
// TODO Auto-generated method stub
return getYoil(date.getYear(), date.getMonth(), date.getDay());
}
컨트롤러 매개변수
@RequestMapping("/getYoilMVC6")
//@ModelAttribute 생략 가능. Model model도 필요없음.
//BindingResult result는 바인딩 할 매개변수 바로 뒤에 위치.
public String main(MyDate date, BindingResult result) throws IOException {
System.out.println("result="+result);
BindingResult 적용 후 result로 에러에 대한 메서드 사용.
@ExceptionHandler(Exception.class)
public String catcher(Exception ex, BindingResult result) {
System.out.println("result="+result);
FieldError error = result.getFieldError();
ex.printStackTrace();
System.out.println("code="+error.getCode());
System.out.println("field="+error.getField());
System.out.println("msg="+error.getDefaultMessage());
return "yoilError";
}