Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

스프링(Spring), <input type="text" name=???> 배열 형태로 보내기 본문

K-DigitalTraining 강의/11. Spring

스프링(Spring), <input type="text" name=???> 배열 형태로 보내기

이대곤 2022. 9. 13. 19:04

* 이번 게시물은 <input type="text" name=???> 에서 name 부분을 배열 형태로 작성할 수 있는지 처음 알게되어 작성하였다.

컨트롤러로 전송하고 싶은 부분

* examlist 라는 이름은 ExamListBean 클래스의 멤버변수 이름임에 주의하자.

<%@ 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="test.prd" method="post">
	    <input type="text" name="examlist[0].title" value="1번"><br>
	    <input type="text" name="examlist[0].subject" value="국어"><br>
	    <input type="text" name="examlist[0].limit_time" value="30"><br><br>
	        
	    
	    <input type="text" name="examlist[1].title" value="2번"><br>
	    <input type="text" name="examlist[1].subject" value="영어"><br>
	    <input type="text" name="examlist[1].limit_time" value="60"><br><br>
	    
	    <input type="text" name="examlist[2].title" value="3번"><br>
	    <input type="text" name="examlist[2].subject" value="수학"><br>
	    <input type="text" name="examlist[2].limit_time" value="100"><br><br>
	    <input type="submit" value="전송">
	</form>
</body>
</html>

위와같이 처리하기 위해 필요한 2개의 Bean 클래스

import java.util.List;

public class ExamListBean {
	private List<ExamBean> examlist;
	 
	public ExamListBean() {
		super();
	}
	
	public ExamListBean(List<ExamBean> examlist) {
		super();
		this.examlist = examlist;
	}

	public List<ExamBean> getExamlist() {
		return examlist;
	}

	public void setExamlist(List<ExamBean> examlist) {
		this.examlist = examlist;
	} 
}
public class ExamBean{
	private String title;
	private String subject;
	private String limit_time;
    
	public ExamBean() {
		super();
	}

	public ExamBean(String title, String subject, String limit_time) {
		super();
		this.title = title;
		this.subject = subject;
		this.limit_time = limit_time;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getLimit_time() {
		return limit_time;
	}

	public void setLimit_time(String limit_time) {
		this.limit_time = limit_time;
	}
}

컨트롤러에서 받은 값 출력해보기

@Controller
public class TestController {
	
	private final String command = "test.prd";
	private String getPage ="test";
	
	@RequestMapping(value = command, method = RequestMethod.GET)
	public String showInsertForm() {
		System.out.println("TestController에 GET 요청 들어옴");
		return getPage;
	}
	
	@RequestMapping(value = command, method = RequestMethod.POST)
	public String doAction(ExamListBean ebList) throws UnsupportedEncodingException {
		System.out.println("TestController에 POST 요청 들어옴");
		
		ArrayList<ExamBean> list = (ArrayList<ExamBean>) ebList.getExamlist();
		
		System.out.println(list.get(0).getSubject());
		System.out.println(list.get(0).getLimit_time());
		System.out.println(list.get(0).getTitle());
		
        System.out.println();
        
		System.out.println(list.get(1).getSubject());
		System.out.println(list.get(1).getLimit_time());
		System.out.println(list.get(1).getTitle());
		
		return getPage;
	}
}

/*
국어
30
1번

영어
60
2번
*/
Comments