@ModelAttribute
는 메소드에 선언할 경우 해당 메소드가 반환하는 객체를 Model를 통해
뷰에 전달 된다.
또한 @RequestMapping
이 선언된 메소드보다 먼저 호출되어 커맨드 객체를 초기화하는 담당도 한다
@ModelAttribute
이 선언된 메소드가 사용가능한 파라미터 : HttpServletRequest, Locale, @RequestParam 어노테이션 적용 파라미터, @PathVariable 어노테이션 적용 파라미터 등등
메소드에 @ModelAttribute 선언
@ModelAttribute("serverTime")
public String getServerTime(Locale locale) {
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
return dateFormat.format(date);
}
- "serverTIme"의 속성으로 Model객체에 리턴값을 바인딩 하여 JSP 파일에서
${serverTime}
과 같은 형태로 사용할 수 있다.
파라미터에 @ModelAttribute 선언
@RequestMapping(value="/memJoin", method=RequestMethod.POST)
public String memJoin(@ModelAttribute("mem") Member member) {
service.memberRegister(member);
return "memJoinOk";
}
- 파라미터의 선언된 경우는 member 커맨드 객체의 속성값들이 자동으로 바인딩 되어 반환되는 뷰에게 뿌려지게 된다.
${mem.속성이름}
과 같이 JSP 파일에서 사용될 수 있다.
이 두가지 방식을 사용하여 뷰에게 Model 객체를 전달할 수 있다.
@Controller
@RequestMapping("/member")
public class MemberController {
@Resource(name="memService")
MemberService service;
@ModelAttribute("serverTime")
public String getServerTime(Locale locale) {
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
return dateFormat.format(date);
}
@RequestMapping(value="/memJoin", method=RequestMethod.POST)
public String memJoin(@ModelAttribute("mem") Member member) {
service.memberRegister(member);
return "memJoinOk";
}
}
JSP 화면
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>memJoinOk</title>
</head>
<body>
<h1> memJoinOk</h1>
ID : ${mem.memId} <br/>
PW : ${mem.memPw} <br/>
Mail : ${mem.memMail} <br/>
Phone : ${mem.memPhone.memPhone1} - ${mem.memPhone.memPhone2} - ${mem.memPhone.memPhone3} <br/>
<P> The time on the server is ${serverTime}. </P>
<a href="/mvc/resources/html/memJoin.html"> Go MemberJoin</a>
</body>
</html>