관리 메뉴

bright jazz music

리스트 또는 배열을 파라미터로 전달할 때의 처리 본문

Framework/Spring

리스트 또는 배열을 파라미터로 전달할 때의 처리

bright jazz music 2022. 4. 7. 09:06
//SampleController.class

@GetMapping("/ex02List")
public String ex02List(@RequestParam("ids")ArrayList<String> ids) {

	log.info("ids: " + ids);
    return "ex02List";
}


//INFO: com.~~~경로~~~.controller.SampleController - ids: [111, 222, 333]

 

-동일한 이름의 파라미터가 여러 개 전달되는 경우에는 ArrayList<> 등을 이용해서 처리 가능

- 스프링은 파라미터의 타입을 보고 객체를 생성하므로 파라미터의 타입은 List<>와 같이 인터페이스 타입이 아닌 실제적인 클래스 타입으로 지정한다.

-위 코드의 경우 'ids'라는 이름의 파라미터가 여러 개 전달되더라도 ArrayList<String>이 생성되어 자동으로 수집된다.

 

배열의 경우도 마찬가지

// SampleController에 추가

@GetMapping("/ex02Array")
public String ex02Array(@RequestParam("ids") String[] ids) {

	log.info("array ids: " + Arrays.toString(ids));
    //배열의 원소를 확인할 때는 Array.toString() 함수를 사용해야 한다.
    //ids.toString을 쓰면 주소값밖에 나오지 않는다.
    return "ex02Array";
}

 

 

객체 리스트

 

 

만일 전달하는 데이터가 SampleDTO와 같이 객체 타입이고 여러 개를 처리해야 할 때

 

package ~~;

import java.util.ArrayList;
import java.util.List;
import lombok.Data;

@Data
public class SampleDTOList {
	private List<SampleDTO> list;
    
    public SampleDTOList() {
    	list = new ArrayList<>();
    }

}

 

 

 

SampleController에서는 SampleDTOList 타입을 파라미터로 사용하는 메서드를 생성한다.

//SampleController.class

@GetMapping("/ex02Bean")
public String ex02Bean(SampleDTOList list) {
	log.info("list dtos: " + list);
    
    return "ex02Bean";
}
Comments