vo list / form list / @ModelAttribute list / list로 받기 | spring

2016. 1. 5. 16:24framework/spring


VO를 사용할 때 List Type 을 사용하여 

여러 FormTag를 리스트(배열)로 받는 예제이다.


 

 


 

한 Form 에서 전송할 때 보통은 VO 를 하나만 매칭시켜서 Controller 에서 받는다.


근데 나는 한 Form 에서 전송하고 Controller 에서 VO 를 리스트로 받아야 하는 경우가 생겼다.

 


 


예를 들어

public class NameVO{
 
 private String name;
 
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
}
 
cs

와 같은 VO 객체가 있고

 



 

<form:form commandName="NameVO" name="dataForm" id="dataForm" >
 
<form:input path="name" value="홍길동"/>
 
<form:input path="name" value="김길동"/>
 
<form:input path="name" value="강길동"/>
 
</form:form>
 
cs

와 같은 구조의 FORM 이 있는데


이 FORM 을 전송 할 경우


그냥 전송해 버리면 NameVO의 Name에는 "홍길동,김길동,강길동" 이 들어있다.


split 으로 잘라서 써도 되지만 조금 더 나은 방법으로 아예 List 로 받아버리자

 

public class NameVO{
 
 private String name;
 
 
 
 
 private List<NameVO> nameVOList;
 
 
 
 
public List<NameVO> getNameVOList() {
  return nameVOList;
 }
 
 public void setNameVOList(List<NameVO> nameVOList) {
  this.nameVOList = nameVOList;
 }
 
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
}
 
cs

위와 같이 자신을 참조하는 List 와 getter/setter 를 생성하고

 



 

<form:form commandName="NameVO" name="dataForm" id="dataForm" >
 
<input type="text" name="nameVOList[0].name" >
 
<input type="text" name="nameVOList[1].name" >
 
<input type="text" name="nameVOList[2].name" >
 
</form:form>
 
cs

이와 같이 리스트 번호와 그 리스트에 담을 name값을 정해주면



NameVO 객체 안에 nameVOList 에 순차적으로 VO 의 name에 담겨있음을 확인할 수 있다.