스프링 폼은 HTML 폼을 표시하기 위한 태그 라이브러리
스프링 폼을 이용하면 HTML 폼과 자바 객체를 쉽게 바인딩할 수 있음
path : 폼 항목에 바인딩되는 폼 객체(Controller에 있음)의 프로퍼티를 지정
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
1) 폼 객체의 속성명을 직접 지정
model.addAttribute("memberVO", new MemberVO());
2) 폼 객체의 속성명은 직접 지정하지 않으면 * 폼 객체의 클래스명의 맨 처음 문자를 소문자로 변환하여 처리
<form:form modelAttribute="memberVO" method="post" action="/member/insert">
3) ModelAttribute 애너테이션으로 폼 객체의 속성명을 gaeddong라고 지정했다면..
스프링 폼의 modelAttribute 속성의 값도 똑같이 gaeddong라고 작성해줘야 함
package kr.or.ddit;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//자바빈으로 관리하겠다
@Controller
public class MemberController {
@RequestMapping("/member/insert")
public String insert(Model model, @ModelAttribute("memberVO") MemberVO memberVO) {
memberVO.setMemberid("a001");
memberVO.setName("개똥이");
return "member/joinForm";
}
}
패스워드 속성은 JSP로 전달되지 않는다.
@RequestMapping("/member/insert")
public String insert(Model model, @ModelAttribute("memberVO") MemberVO memberVO) {
//취미 세팅
Map<String, String> hobbyMap = new HashMap<String, String>();
hobbyMap.put("01", "야구");
hobbyMap.put("02", "BTS Music");
hobbyMap.put("03", "스파이더맨 시리즈");
model.addAttribute("hobbyMap", hobbyMap); //Model객체에 Attribute로 hobbyMap설정
return "member/joinForm";
}
<p>
취미 :
<form:checkboxes path="hobbyList" items="${hobbyMap}" />
</p>
${hobbyMap}으로 items 설정하기.
List<String> hobbyList = memberVO.getHobbyList();
for(String hobby : hobbyList) {
logger.info(hobby);
}
콘솔창 :
<p>
취미(hobbyArray) :
<form:checkbox path="hobbyArray" value="안찰수" label="안찰수" /><br>
<form:checkbox path="hobbyArray" value="이죄명" label="이죄명" /><br>
<form:checkbox path="hobbyArray" value="응등이탐정" label="응등이탐정" /><br>
<form:checkbox path="hobbyArray" value="쉼상정" label="쉼상정" /><br>
</p>
@RequestMapping(value="/member/insert", method=RequestMethod.POST)
public String insertPost(@ModelAttribute MemberVO memberVO) {
String[] hobbyArray = memberVO.getHobbyArray();
for(String hobby:hobbyArray) {
logger.info(hobby);
}
//성별 세팅
Map<String, String> genderMap =
new HashMap<String, String>();
genderMap.put("Male", "남성");
genderMap.put("Female", "여성");
genderMap.put("Other", "기타");
// session.setAttribute("gender", "genderMap");와 비슷한 역할
model.addAttribute("genderMap", genderMap);
방법1) <form:radiobuttons> 사용
<p>
성별 :
<form:radiobuttons path="gender" items="${genderMap}"/>
</p>
Controller에서 Model객체에 저장한(setAttribute) genderMap을 JSP에서 ${ }로 꺼내왔다.
방법2) <form:radiobutton> 사용
<p>
성별 :
<form:radiobutton path="gender" value="Male" label="Male" />
<form:radiobutton path="gender" value="Female" label="Female" />
<form:radiobutton path="gender" value="Other" label="Other" />
</p>