JAVA

[Java] Java에서 Js로 Object(List 등) 가져올 때 어떻게할까? ObjectMapper 사용

개발자 배찌 2022. 11. 24. 18:50
728x90

회사에서 화면 개발 하는 중에
Java에서 뽑은 list 객체를 js로 가지고 오고 싶었다.

List<RptScreBmkPVO> rptScreBmkList = drvnMonrService.selectRptScreBmkList(sessionUserId);

mav.addObject("rptScreBmkList", rptScreBmkList);


Jsp로 가져올 경우에는 jstl을 사용해서

<c:forEach var="list" items=${rptScreBmkList}>
${list.vcno}
</c:forEach>

이런식으로 가져올 수 있었는데,

js로 가져오려고 하니,
var test = ${rptScreBmkList}
이렇게 썼는데 안되는것이였다!!!

해결방법🌼🌼
애초에 자바단에서 list를 json으로 변환해서
Js에 뿌려줘야했던 것 이였다.

List<RptScreBmkPVO> rptScreBmkList = drvnMonrService.selectRptScreBmkList(sessionUserId);

ObjectMapper om = new ObjectMapper();

//List를 Json으로 변환
om.writeValueAsString(rptScreBmkList);

//보기좋게 출력
//om.writeWithDefaultPrettyPrinter().writeValueAsString(rptScreBmkList);

mav.addObject("rptScreBmkList", om.writeValueAsString(rptScreBmkList));


그렇다면, js에서 list형태를 가진 string을
Java단에 넘겨서
그 String을 List로 변환하는 방법은?

(회사에서 chart를 그리는데 (chartjs 사용)
siteSqno를 string으로 심어놔서
(실제로는 list형태..)

그 막대그래프를 클릭했을 때, 심어놓은 siteSqno를
다시 java단으로 넘겨야 했었던 상황)

의문점 ?차트에 심어놓을 때, 리스트로 심으면 안되나?
리스트로 심고 자바단으로 리스트객체를 넘기면?
어쨌든..

해결방법🌼🌼

params.add("sqnoList", JSON.stringify(sqnoList));
String으로 넘겨받은 List 를 Java에서 List로 바꿔서 사용하는 방법

@RequestParam String siteList를 넘겨받고

ObjectMapper om = new ObjectMapper();
List<Long> siteSqnoList = om.readValue(siteList, om.getTypeFactory().constructCollectionType(List.class, Long.class));

//mybatis mapper param객체에 담아서 쿼리파람에 사용
pvo.setSiteSqnoList(siteSqnoList);

)