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 옵션을 쓰는것을 권장한다.

반응형