전자정부나 스프링에서 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>
'Programming > Spring' 카테고리의 다른 글
@Autowired 와 @Resource (0) | 2015.06.15 |
---|---|
web.xml url-pattern / 와 /* 의 차이점 (0) | 2015.06.11 |
전자정부프레임워크 JUNIT 을 이용한 테스트 (0) | 2015.06.10 |
[spring] @pathVariable 사용설정및 사용하기 (0) | 2015.06.10 |
[전자정부프레임워크] "알 수 없는 오류가 발생하였습니다." 라는 에러 메시지가 발생했을 때 대처법 (0) | 2015.06.04 |