2020-10-27 23:30:36
Ajax로 Controller에 파라미터를 넘길때 json 형태로 보낸다.
아래 예시는 tom이라는 사람의 나이는 21살이라는 데이터를 보낼때의 json 형태이다.
{
"name": "tom",
"age": "21"
}만약 처리해야 될 사람이 여러명이라면 list형태 전송할 수 있다.
var dataArray = [];
var data1 = {
"name" : "tom",
"age" : "21"
}
var data2 = {
"name" : "jack"
"age" : "22"
}
dataArray.push(data1);
dataArray.push(data2);
var paramList = {
"paramList" : JSON.stringify(dataArray)
}
$.ajax({
type : "POST",
url : "/memberInfo.do",
data : paramList,
success : function(data) {},
error : function(e) {}
});위와 같이 ajax에서 list형태의 json 데이터를 controller에 전송할 수 있다.
controller에서는 아래와 같이 데이터를 받는다.
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
@RequestMapping("/memberInfo.do")
public String memberList(@RequestParam Map<String, Object> parameters{
String json = parameters.get("paramList").toString();
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> paramList = mapper.readValue(json, new TypeReference<ArrayList<Map<String, Object>>>(){});
}리스트를 DTO로 받아야할 경우는 아래와 같이 사용할 수 있다.
List<dto> paramList = mapper.readValue(json, new TypeReference<ArrayList<dto>>(){});