객체로 파라미터 주입받기

728x90

 

1. Map과 List로 주입받기

 

클라이언트가 전달하는 모든 파라미터 데이터를 한번에 Map/List로 주입 받을 수 있다.

* 단 동일 명으로 전달되는 2개 이상의 파라미터는 하나만 담기게 된다.

동일 명으로 전달되는 파라미터가 2개 이상이라면 List로 주입 받아야 한다.

형 변환이 자동으로 되지않아 문자열로만 받아야 한다.

 

<a href="test?data1=100&data2=200">test</a>
@GetMapping("/test")
public String test(@RequestParam Map<String, String> map) {
		//@ReuqeustParam List<String> list
									
	String data1 = map.get("data1");
	String data2 = map.get("data2");
/*
	String data3 = map.get("list");
	for(String str : data3){
		System.out.println("data3 = " + str);	
	}
*/


}

 

2. @ModelAttribute

이 어노테이션을 사용하면 파라미터를 객체로 주입 받을 수 있습니다.

전달되는 파라미터의 이름과 동일한 프로퍼티에 자동으로 주입됩니다.

이 어노테이션은 생략이 가능합니다.

이러한 객체를 커맨드 객체(Command Object)라고 부릅니다.

getter setter가 있는 DTO나 Domain Entity를 통해 주입됩니다.

만약 memberDTO라고 한다면,

<a href="test?data1=100&data2=200&data3=300&data3=300">test</a>
@GetMapping("/test")
public String test(@ModelAttribute memberDTO member) {
			//public String test(memberDTO member)  생략가능
	System.out.println("data1 = " + member.getData1());
	System.out.println("data2 = " + member.getData2());

	for(int number : member.getData3()){
		System.out.println("data3 = " +  number);	
	}



}

 

반응형