본문 바로가기
MSA

[Spring]Ajax에서 보낸 배열을 Controller에서 받기

by 엘리후 2023. 4. 13.

비동기 전송을 위해서 Ajax를 사용하던중 클라이언트에서 배열을 담아서 보낼일이 생겼다. 이 전까지는 단순히 값만 json 형식으로 보냈었다. 그럼 배열은 어떤 형식으로 보내고 어떤 방식으로 받아야 하는 것일까?

먼저 checkBox를 이용해서 체크된 값들을 new Array()에 담는다. 그리고 자바스크립트 객체 형식으로 data에 담아서 보낸다. 이 때 반드시 post 형식으로 보내야 한다.

var checkArr = new Array();

...

$.ajax({
  url : "/shop/deleteCart",
  type : "post",
  data : {
    chbox : checkArr
  },
  success : function(result){
    if(result == 1) {
      location.href = "/shop/cartList";
    } else {
      alert("삭제 실패");
    }
  }
});

Controller에서는 기존에 사용하던 @RequestParam("키값") 변수타입 변수명 이런 식으로 받아서는 안된다. 반드시 @RequestParam(value="parameter이름[]")List<String> 형으로 받아와야 한다.

@ResponseBody
    @RequestMapping(value = "/deleteCart", method = RequestMethod.POST)
    public int deleteCart(HttpSession session,
         @RequestParam(value="chbox[]") List<String> chbox, CartVO cart) throws Exception {
        logger.info("delete cart");

         MemberVO member = (MemberVO)session.getAttribute("member");
         ...

chkbox[]의 는 ajax에서 자바스크립트 키 값을 그대로 사용하면 된다.

댓글