본문 바로가기
Spring

Springframework <form:form> 이란?

by 디찌s 2020. 4. 20.
728x90
반응형

*도움이 되셨다면 광고 한번 클릭 부탁드립니다! 제게 큰 힘이됩니다!

1.<form:form> 이란?

 

전자정부프레임워크에 올인원패키지를 뜯어보면 <form:form>이라는 구문을 많이 볼수있다.

 

그렇다면 이 <form:form>은 무엇일까?

 

<form:form>은 HTML 폼에 데이터를 바인딩하거나 또는 에러메세지 처리등을 간편하게 해준다.

 

form 태그라이브러리를 사용하기위해선 아래와 같은 태그를 jsp 내부 상단 삽입하여 사용해야한다.

 

 

 

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

 

 

 

또한 form 태그는 세가지 속성값을 입력해야한다.

 

commandName(스프링 5버전 = modelAttribute) ,action(보낼 URL),ㅡmethod(POST) 등을 입력해야한다.

 

예를들어 호출을 하였을때 URL이 /bbs/boardlist.do 라고 가정한다면

 

 

 

<form:form commandName="boardVO"></form:form>

 

 

 

위에 코드를 HTML form 구문으로 바꾸면 아래와 같은 코드로 전송되는 것이다.

 

 

 

<form id="boardVO" action="/bbs/boardlist.do" method="post"></form>

 

 

 

현재 정부프레임워크 올인원패키지를 보면 대부분 form:form을 사용하고 있다.

 

웹 어플리케이션 코드에 아래와 같은 컨트롤러가 있을경우

 

 

 

@RequestMapping("/adm/bbs/insertArticleView.do")
	public String insertNoticeView(@ModelAttribute("searchVO") BoardVO boardVO,
			ModelMap model) throws Exception {
		LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
		
		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
		
		
		BoardVO board = new BoardVO();
		if(!isAuthenticated) {
			return "/uat/uia/egovLoginUsr.do";
		}
		
		
		model.addAttribute("articleVO", boardVO);


		return "/mvs/adm/bbs/ArticleRegister";
	}

 

 

 

 

 

jsp에서 아래와 같이 commandName = 컨트롤러 addAttribute("articleVO") 처럼 받아서 사용해 줘야하며,

 

input 이나 textarea는 path라는 태그에 vo와 이름을 매칭시켜서 데이터를 전송한다.

 

 

 

 

<form:form commandName="articleVO" action="${pageContext.request.contextPath}/adm/bbs/insertArticle.do" method="post" enctype="multipart/form-data">
			
            <table class="table table-striped" style="text-align: center; border: 1px solid #dddddd">
				<thead>
					<tr>
						<th colspan="2" style="background-color: #eeeeee; text-align: center;">게시판 글쓰기 양식</th>
					</tr>
				</thead>
				
						<tbody>
							<tr>
								<td><form:input path="nttSj" class="form-control" placeholder="글 제목" name="nttsj" maxlength="50"/></td>
							</tr>
							<tr>
								<td><form:textarea path="nttCn" class="form-control" placeholder="글 내용" name="nttCn" maxlength="2048" style="height: 350px;"/></td>
							</tr>

						</tbody>
					</table>	
				<span><input type="submit" class="btn btn-primary pull-right" value="글쓰기"/></span>	
			</div>
		</div>
		
		
		<input type="hidden" name="bbsId" value="<c:out value='${articleVO.bbsId}'/>">
		</form:form>

 

 

 

 

 

컨텍스트 패스를 URL 앞단에 자동으로 붙이기 위해선 <c:url>태그를 사용하고,

 

스프링  form 태그의 action 속성dpsms <c:url> 태그를 사용할수없어서

 

위 jsp 처럼 ${pageContext.request.contextPath}를 붙여 사용한다.

 

728x90
반응형

'Spring' 카테고리의 다른 글

[스프링(Spring)] 스프링이란 무엇인가!? -1  (0) 2021.02.19
POJO란 도대체 무엇인가?  (0) 2020.04.22
mybatis framework를 알아보자  (0) 2020.04.06
자바 bean ?? 클래스란  (0) 2020.04.03
스프링 MVC 커맨드 객체란 ??  (0) 2020.04.03

댓글