티스토리 뷰

리스트를 전달하기 위해 검색을 많이 해봣지만

대부분 리스트타입을 리스트 타입으로 넘기거나, json을 json으로 넘기는 경우가 많았다.


내 경우 리스트와 함게 string타입의 다른 파라미터도 같이 넘겨 db를 타는 경우가 많기 때문에

파라미터타입을 map으로 주로 사용을 한다.


아래의 경우 파라미터 타입을 HashMap으로 사용하는 경우이다.



[script]

리스트를 json타입으로 변환해준 후 ajax를 통해 controller로 전달

var dataParam = {list:JSON.stringify($scope.lists), param1:'param1', param2:'param2'};

$.ajax({

type : 'POST',  

dataType : 'json', 

data: dataParam,

url : url,  

success : function(returnData) {

    

},error:function(e){


};

}

}); 

key : list,        value = json list

key : param1 , value ="param1"

key : param2,  value ="param2"


와 같은 map타입의 파라미터 이다.



[java]

//import com.fasterxml.jackson.databind.ObjectMapper;


public Map<String, Object> jsonList(@RequestParam Map<String, Object> parameters){

String json = parameters.get("list").toString();

ObjectMapper mapper = new ObjectMapper();

List<Map<String, Object>> list = mapper.readValue(json, new TypeReference<ArrayList<Map<String, Object>>>(){});


return null;

}


HashMap타입의 parameter에서 key가 list인 값을 string형태로 가져온다.

여기서 String 형태의 json값을 arrayList로 풀어가는 과정이다.


결과적으로 List<> list 에는 json을 arrayList로 변환한 값이 들어가 있다.


이 리스트를 DTO로 받고싶은 경우

    List<DTO> list = mapper.readValue(json, new TypeReference<ArrayList<DTO>>(){});


로 바꾸어 사용하면 된다.





-------- 2018-09-12  내용추가 ----------------------------------------

위와 같은 내용을 알려주던 중 질문 하나를 받았다.

Map의 Object타입을 이용하는 경우 xml에서 int와 string을 구분할 수 있을까?

xml에서 타입 지정이 가능하다.

직접 해본 바로는

int타입은 #{key, jdbcType=INTEGER} 로 지정해주면 해당 값이 int형으로 넘어간다.

String타입은 같은 방법으로 지정해도 되지만 따로 지정하지 않아도 제대로 값이 들어갔다.

'spring memo' 카테고리의 다른 글

ajax로 넘겨받은 데이터의 key 찾기  (0) 2018.07.20
jsp 엑셀 컨트롤  (0) 2018.07.18
html tag ctrl  (0) 2018.06.12
xml query  (0) 2018.06.04
input ctrl  (0) 2018.05.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함