Programming/Spring
[Spring] <form:form> 태그 사용법
OriginMaster
2021. 10. 28. 15:52
반응형
Spring에서 지원하는 form 태그 라이브러리가 있다. 이것을 사용하면 데이터를 바인딩하거나 에러메세지를 간편하게 할 수 있다.
먼저 jsp파일 상단에 아래와 같이 taglib를 추가해준다.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
그 후 예문과 같이 작성해준다.
<div id="information">
<form:form action="enrollment" method="post" modelAttribute="userInfo"> <!-- @modelAttribute 사용 - VO클래스 -->
이름 : <input type="text" maxlength="7" name="name"/><br>
나이 : <input type="number" min="1" max="150" step="1" name="age"/><br>
성별 :
<input type="radio" name="gender" value="남성" checked/> 남성
<input type="radio" name="gender" value="여성"/> 여성
<br><br>
<button type="submit" id="analysisBtn" >분석</button>
</form:form>
</div>
기본 form 태그와는 달리 modelAttribute라는 attr가 추가된걸 볼 수 있는데,
@RequestMapping(value="/enrollment", method=RequestMethod.POST)
public String enrollment(@ModelAttribute("userInfo")UserVO userVO, Model model ) {
System.out.println("@enrollment");
try {
model.addAttribute("name", userVO.getName());
model.addAttribute("age", userVO.getAge());
model.addAttribute("gender", userVO.getGender());
} catch (Exception e) {
logger.debug(e.toString());
e.printStackTrace();
}
return "/home";
}
Controller에서 어노테이션 @ModelAttribute를 통해 데이터를 받는다.
데이터는 별도의 VO 클래스를 작성해서 받게 되는데, 데이터타입의 형변환을 알아서 처리해준다.
(int타입에 String 텍스트가 들어가면 형변환 에러 발생)
추가적으로 modelAttribute옵션 대신 commandName을 쓰기도 하는데,
두 옵션은 동일한 기능을 하지만, SpringFramwork 버전에 따라 commandName 에러가 발생할 수 있다.
따라서 modelAttribute 옵션을 쓰는것을 권장한다.
반응형