Spring MVC - Form 커스텀 태그

2020. 9. 9. 20:34Java/Spring

반응형

홈페이지를 만들다 보면 회원정보 수정, 글 수정 등 기존의 데이터를 가지고 와서 form 태그 안에 정보를 보여줘야 하는 경우가 있다. 이때 일일이 정보를 입력하는 번거로움을 줄이기 위해 Form 커스텀 태그가 존재한다.

 

 

전체 사용되는 빈 객체

public class DataBean {

		private String data1;
		private String data2;
		private String data3;
		
		public String getData1() {
			return data1;
		}
		public void setData1(String data1) {
			this.data1 = data1;
		}
		public String getData2() {
			return data2;
		}
		public void setData2(String data2) {
			this.data2 = data2;
		}
		public String getData3() {
			return data3;
		}
		public void setData3(String data3) {
			this.data3 = data3;
		}
		
		
}

 

 

1. 기존 방식과 동일하게 입력

기존 방식과 동일하게 bean 객체를 가져와 값을 세팅하고 객체를 넘겨서 값을 뿌리는 방식이다.

 

@Controller
public class TestController {

	@GetMapping("/test1")
	public String test1(DataBean bean) {
		
		bean.setData1("1");
		bean.setData2("2");
		bean.setData3("3");
		
		return "test1";
	}
}

 

위 메소드는 자동으로 DataBean 객체를 받아와서 1,2,3 값을 주입하여 request로 test1에 전송한다.

 

실제 웹 제작에서는 db로부터 값을 select해와서 값을 주입한다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="result" method="post">
	data1:<input type="text" name="data1" value="${requestScope.dataBean.data1}"/>
	data2:<input type="text" name="data2" value="${requestScope.dataBean.data2}"/>
	data3:<input type="text" name="data3" value="${requestScope.dataBean.data3}"/>
</form> 
</body>
</html>

해당 값을 requestScope를 이용하여 화면에 뿌릴 수 있다.

 

위 방식은 일일이 값을 지정해줘야 하므로 코드가 길어진다. 위 방식을 Form 커스텀 태그를 이용하여 줄일 수 있다.

 

 

2. 커스텀태그 이용

커스텀 태그를 이용하기 위해 jsp 파일에 아래 태그를 선언한다.

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

 

 

그리고 form 태그를 아래와 같이 작성한다.

<form:form modelAttribute="dataBean" action='test2'>
data1 : <form:input path="data1"/><br/>
data2 : <form:input path='data2'/><br/>
data3 : <form:input path='data3'/><br/>
</form:form>

modelAttribute="dataBean" 를 통해서 전달되는 빈 객체의 이름을 정해준다.

 

해당 빈 객체의 데이터들의 이름을 통해서 값이 넘어온다. 위 코드를 웹에서 확인하면 아래와 같은 코드로 확인이 되는 걸 알 수 있다.

 

<form id="dataBean" action="test2" method="post">
data1 : <input id="data1" name="data1" type="text" value="1"/><br/>
data2 : <input id="data2" name="data2" type="text" value="2"/><br/>
data3 : <input id="data3" name="data3" type="text" value="3"/><br/>
</form>

 

 

빈객체의 이름은 controller에서 @ModelAttribute("새 이름")을 통해서 수정 될 수 있다.

 

 

반응형