ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Springframework <form:form> 이란?
    Spring 2020. 4. 20. 15:15
    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>	
    		
    		
    	<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
Designed by Tistory.