form tag
'form'태그는 데이터 바인딩을 위해 태그 안에 바인딩 path를 지정해 줄 수 있다. path에 해당되는 값은 도메인 모델의 Bean 객체를 의미한다. 사용예는 다음과 같다.<form:form commandName="user"> userId : <form:input path="userId" /> </form:form>
<% request.setAttribute("user", sample.services.UserVO())%>
protected Object formBackingObject(HttpServletRequest request) throws Exception { UserVO vo=new UserVO(); request.setAttribute("user",vo); return new UserVO(); }
input tag
HTML의 input태그의 value가 text인 것을 기본 value로 갖는다. 이 태그의 예는 위의 form태그 예에서 볼수있다. 또한 다음과 같은 화면을 출력하게 된다.
checkbox tag
다음은 checkbox tag의 예이다. 마찬가지로 path에 도메인 객체의 bean name을 매핑시켜주고 label속성을 이용하면 jsp페이지로 보여질 이름을 설정할 수 있다.<form:checkbox path="hobby" value="listeningMusic" label="음악감상"/> <form:checkbox path="hobby" value="study" label="공부"/>

checkboxes tag
위의 checkbox tag는 각각의 항목에 대해 작성해줘야 하지만 checkboxes tag를 사용하면 items속성을 이용해서 한줄로 나타내줄 수 있다. 이러한 items에 들어갈 값은 컨트롤러의 formBackingObject()메소드에서 Array, List, Map형태의 것들로 넘겨 줄 수 있다. Map의 key와 value쌍으로 넘겨줄 경우 key는 태그의 value값이 되고 value는 label명이 된다. (단, Array나 List로 넘길 경우 label은 value와 같은 값을 가지게 된다.) 다음은 그 예이다.protected Object formBackingObject(HttpServletRequest request) throws Exception { UserVO vo=new UserVO(); Map interest =new HashMap(); interest.put("reading", "독서"); interest.put("listeningMusic", "음악감상"); interest.put("study", "공부"); request.setAttribute("interest",interest); request.setAttribute("user",vo); return new UserVO(); }
<tr> <td>hobby :</td> <td><form:checkboxes path="hobby" items="${interest}" /></td> </tr>

radiobutton tag
다음은 radiobutton tag의 예이다. radiobutton tag 또한 label 속성을 이용하여 label명을 설정해 줄 수 있다.<tr> <td>Sex:</td> <td>Male: <form:radiobutton path="sex" value="M" label="남자"/> <br/> Female: <form:radiobutton path="sex" value="F" label="여자"/> </td> </tr>

radiobuttons tag
다음은 radiobuttons tag의 예이다. items 속성의 사용방법은 위의 checkboxes tag와 동일하다.<tr> <td>Sex:</td> <td><form:radiobuttons path="sex" items="${sexOptions}"/></td> </tr>
password tag
다음은 password tag의 예이다.<tr> <td>password :</td> <td><form:password path="password" /></td> </tr>

select tag
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(); }
<tr> <td>주소</td> <td><form:select path="address" items="${address}" /></td> </tr>

option tag
다음은 option tag의 사용 예이다.<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>
options tag
다음은 options 태그의 사용예이다.<tr> <td>주소</td> <td><form:select path="address"> <form:options items="${address}" /> </form:select></td> </tr>
textarea tag
다음은 textarea tag의 사용 예이다.<td>Note :</td> <td><form:textarea path="comment" rows="3" cols="20"></form:textarea></td>

errors tag
Spring은 validatior에서 얻어진 메시지를 JSP페이지에서 쉽게 출력할 수 있도록 spring form 태그의 form:errors태그를 제공한다. 이는 생성한 validator를 통해 입력값의 유효성 체크 후 에러 메시지를 출력해주는데 자세한 사항은 본 매뉴얼 Spring MVC validator - form:errors 태그 사용 방법을 참고한다.sample
- tag.jsp(입력화면)
- FormTagTestController.java
- formtagafter.jsp(출력화면)
<body> <form:form commandName="user"> <table> <tr> <td>userId :</td> <td><form:input path="userId" /></td> </tr> <tr> <td>password :</td> <td><form:password path="password" /></td> </tr> <tr> <td>sex :</td> <td><form:radiobutton path="sex" value="M" label="남자" /> <form:radiobutton path="sex" value="F" label="여자" /></td> </tr> <tr> <td>주소</td> <td><form:select path="address" items="${address}"> </form:select></td> </tr> <tr> <td>hobby :</td> <td><form:checkboxes path="hobby" items="${interest}" /></td> </tr> <tr> <td>Note :</td> <td><form:textarea path="comment" rows="3" cols="20"></form:textarea></td> </tr> </table> <input type="submit" value="submit"/> </form:form> </body>
public class FormTagTestController extends SimpleFormController { private static Log log = LogFactory.getLog(FormTagTestController.class); public FormTagTestController() { setCommandName("user"); setCommandClass(UserVO.class); setFormView("tag"); setSuccessView("formtagafter"); } protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException exception) throws Exception { System.out.println(command.toString()); // TODO Auto-generated method stub UserVO vo = (UserVO) command; return new ModelAndView(getSuccessView(),"vo", vo); } protected Object formBackingObject(HttpServletRequest request) throws Exception { UserVO vo=new UserVO(); Map interest =new HashMap(); interest.put("reading", "독서"); interest.put("listeningMusic", "음악감상"); interest.put("study", "공부"); Map address =new HashMap(); address.put("seoul","서울"); address.put("daegu","대구"); address.put("busan","부산"); request.setAttribute("address",address); request.setAttribute("interest",interest); request.setAttribute("user",vo); return new UserVO(); } }
<body> userId = ${vo.userId}<br/> password = ${vo.password}<br/> address = ${vo.address}<br/> sex = ${vo.sex}<br/> hobby= "${vo.hobby}"<br/> note= "${vo.comment}"<br/> </body>
cf) form:button의 경우 submit 기능을 하기 때문에 일반 button을 사용하고자 한다면 <input type="button">을 사용.
출처 : http://dev.anyframejava.org/anyframe/doc/web/3.0.1/webfw/springmvc/basic/tag.html
'IT > 기타' 카테고리의 다른 글
XML 특수문자 파싱 (0) | 2015.09.24 |
---|---|
tomcat timeout 에러 (0) | 2015.08.19 |
회원가입 간단한 정합성 검사 (0) | 2015.01.14 |
[Sencha Architect/ExtJS/센차] - view(뷰)만들기 (0) | 2014.07.20 |
텔넷(TELNET)을 이용한 이메일(EMAIL) 전송 (0) | 2014.07.09 |