Spring 태그 <form:form> <form:select>
2018.01.23 14:31
Spring 태그 <form:form> <form:select>
전자정부나 스프링에서 Form을 사용할 경우 <fom:form>형태로 사용되는 form tag를 자주보게 된다. 오늘은 스프링에서 제공하는 tag에 대해 정리해 본다.
1. <form:form>
1) spring 폼 태그를 사용하기 위해서는 spring-form.tld파일이 필요하고 이는 spring-webmvc-2.5.2.jar 파일에 포함되어 있다. 이 폼 태그를 사용하기 위해서는 JSP 페이지에 taglib을 추가해줘야한다.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
2) 'form'태그는 데이터 바인딩을 위해 태그 안에 바인딩 path를 지정해 줄 수 있다. 이 패스를 처음보면 많이 이상한데 사용하다보면 상당히 편한 기능이다. path에 해당되는 값은 도메인 모델의 Bean 객체를 의미한다. 사용예는 다음과 같다.
<form:form commandName="user"> userId : <form:input path="userId" /> </form:form>
또한 spring form 태그를 이용하기 위해서는 각각의 입력 path값에 매칭될 도메인 객체를 지정해 줘야 하는데 form태그 안에 commandName 속성으로 다음과 같이 지정해 줄 수 있다.
<% request.setAttribute("user", sample.services.UserVO())%>
이러한 commandName의 기본값은 "command"이며 input값들과 매칭될 도메인 객체를 request값으로 세팅해 줘야한다. 이 값은 SimpleFormController를 사용할 경우 FormBackingObject()메소드에서 지정해 줄 수도있다.
protected Object formBackingObject(HttpServletRequest request) throws Exception { UserVO vo=new UserVO(); request.setAttribute("user",vo); return new UserVO(); }
2. <form:select> 태그
select tag도 위의 checkboxes tag나 radiobuttons tag 처럼 items 속성을 이용하여 formBackingObject에서 넘겨주는 값으로 자동 매핑 시켜줄 수 있다.
protected Object formBackingObject(HttpServletRequest request) throws Exception { UserVO vo=new UserVO(); Map address =new HashMap(); address.put("seoul","서울"); address.put("daegu","대구"); address.put("busan","부산"); request.setAttribute("address",address); request.setAttribute("user",vo); return new UserVO(); }
HTML에서는 다음과 같이 사용한다.
<tr> <td>주소</td> <td><form:select path="address" items="${address}" /></td> </tr>
* <form:option> 태그 이용 --> 일반적인 경우에 해당
<tr> <td>주소</td> <td><form:select path="address"> <form:option value="seoul" label="서울" /> <form:option value="daegu" label="대구" />
<form:option value="busan" label="부산" /> </form:select></td> </tr>
* <form:options> 태그
<tr>
<td>주소</td>
<td><form:select path="address">
<form:options items="${address}" />
</form:select></td>
</tr>
출처: http://otep.tistory.com/296 [막블로그]
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

