form 태그 라이브러리를 사용하면 HTML 폼에 데이터를 바인딩 하거나 에러 메시지 처리 등을 간편하게 할 수 있다.
▶ form 태그 설정
form 태그 라이브러리를 사용할 려면 jsp 상단에 설정을 해줘야 한다.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
▶ form 태그 (기본값 - 옵션 없음)
<form:form>
내용~~
</form:form>
↓
------html 결과------
<form id="command" action="현재 요청 URI" method="post">
- id 속성(기본값) : command
- action 속성(기본값) : 자기 페이지의 URL (ex. /test/boardForm.do)
- method 속성(기본값) : POST
▶ commandName과 modelAttribute 옵션
commandName 과 modelAttribute 옵션은 폼에 있는 요소들의 값을 채우기 위해서 사용될 객체를 request로부터 찾을 때 사용할 이름을 지정합니다. 두 옵션은 동일한 기능을 합니다.
vo 객체 (model 혹은 빈즈)
스프링 form 태그를 사용한 부분이랑 매핑 시키기 위해서 사용한다.
vo에 title 이란 변수가 있으면
스프링 form tag를 사용한 것 중에 title 이란 name이 있을 경우에 알아서 setter를 탄다.
수정 시 또한 알아서 getter를 탄다.
commandName → SpringFramework 버전 4 가능, 버전 5는 오류!
commandName 대신에 modelAttribute 옵션을 사용(SpringFramework 버전 5)
1. form 태그(commandName)
<form:form commandName="boardVO"></form:form>
2. form 태그(modelAttribute)
<form:form modelAttribute="boardVO"></form:form>
↓
------html 결과------
<form id="boardVO" action="/test/boardForm.do" method="post"></form>
일반적으로 form에 사용되는 id와 name 속성은 modelAttribute와 별도로 지정하는 것이 편리할 때가 많습니다.
- id / name 속성 : 별도로 지정하지 않으면 commandName과 같은 값
<form:form id="boardForm name="boardForm" modelAttribute="boardVO"></form:form>
결과 HTML:
<form id="boardForm" name="boardForm" action="/test/boardForm.do" method="post"></form>
▶ 컨트롤러 부분
- @RequestMapping 어노테이션을 사용
method 를 GET, POST 로 나눠서 action 처리
- form 태그의 commandName 또는 modelAttribute에서 지정되는 폼의 요소들에 값을 제공할 객체의 지정은 보통 컨트롤러에서 한다.
@RequestMapping(value = "/boardForm.do", method = RequestMethod.GET)
public String boardForm(Model model) throws Exception {
BoardVO boardVO = new BoardVO();
boardVO.setTitle("제목 입니다.");
model.addAttribute("boardVO", boardVO);
return "boardForm";
}
폼요소를 사용하였는데, 컨트롤러에서 모델 객체를 설정하지 않으면 에러가 발생합니다.
- model 객체에 commandName에서 사용된 이름으로 BoardVO객체를 설정
@RequestMapping(value = "/boardForm.do", method = RequestMethod.GET)
public String boardForm(@ModelAttribute BoardVO boardVO, Model model) throws Exception {
boardVO.setTitle("제목 입니다.");
return "boardForm";
}
- 메소드의 인자에 @ModelAttribute 어노테이션을 사용하는 방법도 가능합니다. 이름을 별도로 지정하지 않으면 변수명이 commandName에서 사용될 명칭이 된다.
- @ModelAttribute("boardVO") 처럼 이름을 지정하면 변수명(vo) 과 다른 이름을 사용가능하다.
@RequestMapping(value = "/boardForm.do", method = RequestMethod.GET)
public String boardForm(@ModelAttribute("boardVO") BoardVO vo, Model model) throws Exception {
vo.setTitle("제목 입니다.");
return "boardForm";
}
▶ action에 <c:url> 태그 대신 사용법
※ 컨텍스트 패스를 URL앞단에 자동으로 붙이기 위해서 <c:url> 태그를 사용하는데, 스프링 form 태그의 action 속성에는 <c:url> 태그를 사용할 수 없다. 다음과 같은 방법을 사용합니다.
<form:form action="${pageContext.request.contextPath}/boardInsert.do"> ... </form>
또는
<c:url value="/boardInsert.do" var="insertUrl" />
<form:form action="${insertUrl}"> ... </form>
|
▶ 파일 업로드
- enctype : 파일 업로드를 위한 속성 입니다.
<form:form enctype="multipart/form-data"> ... </form>
▶ 디자인
- cssClass : 폼에 스타일을 지정하기 위해서 사용합니다.
<style>
.formStyle { margin:0; padding:0; }
</style>
<form:form cssClass="formStyle"> ... </form>
- cssStyle : 인라인 스타일을 넣습니다.
<form:form cssStyle="margin:0;padding:0;"> ... </form>
https://m.blog.naver.com/jjhstr/60102113401
[spring] form:form commandName=""??
<form:form commandName="Name" name="Name"> commandName은요. vo객체를 말하는 거에요. vo라고...
blog.naver.com
https://tinkerbellbass.tistory.com/43
Spring MVC 에서 제공하는 폼 태그
참고도서 초보 웹 개발자를 위한 스프링4 프로그래밍 입문 국내도서 저자 : 최범균 출판 : 가메출판사 2015.03.02 상세보기 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3..
tinkerbellbass.tistory.com
'Spring > JavaScript+Jsp(HTMl)' 카테고리의 다른 글
[ js ] 하루동안 이 창을 열지 않음(하루 그만보기) 기능 구현_팝업,레이어팝업 (2) | 2022.03.13 |
---|---|
[ javaScript ( js ) ] 정규식을 이용한 마스킹 처리(가리기) & 정규 표현식 & replace() & repeat() (0) | 2022.03.12 |
[ javascript(js) ] Object 타입에서 특정 값(value)이 있는지 찾기 (0) | 2022.03.11 |
[ javascript ] div 요소에 onload 이벤트를 추가하는 방법 (0) | 2022.03.10 |
[ jsp ] 줄바꿈(개행) 처리하기 (0) | 2022.03.09 |
댓글