지금까지 프로젝트 진행하면서 항상 하나의 데이터만 넘기거나 두개정도만 넘겨서 컨트롤러에서는 

@RepuestParam("ooo") String ooo

이런식으로 받아왔다.

 

대댓글을 구현하기 위해 만들다보니 데이터를 5개정도 한번에 보내서 받도록 하고싶었는데 해왔던것 처럼

Controller에서 RequestParam으로 다 받자니 너무 길어지고 보기도 싫고 불필요해보여서 한번에 받을 수 있는 방법을 찾기 시작함..

 

$(document).on("click", "#CommentReplyInsert", function(){
	
  var commentData = {
    CommentNo : $("#CommentReplyInsert").val(),
    CommentGroupNo : $("#CommentGroupNo").val(),
    CommentIndent : $("#CommentIndent").val(),
    CommentContent : $("#CommentReplyContent").val(),
    BoardNo : $("#BoardNo").val(),
  };
    
  var str = JSON.stringify(commentData);
    
  $.ajax({
    url: "/board/CommentReply",
    method: 'POST',
    dataType: 'json',
    data: str,
    contentType: "application/json; charset=UTF-8",
    success: function(data){
      alert("댓글 OK!");
      location.reload();
    },
    error : function(request, status, error){
      alert("code:" + request.status + "\n"
              + "message : " + request.responseText
              + "\n" + "error : " +error);
    }
  })
})

이렇게 보내주고!

@RequestMapping("/CommentReply")
@ResponseBody
  public void CommentReply(@RequestBody Map<String, Object> commentData) throws Exception{
    System.out.println("Data : "+commentData);
    System.out.println("BoardNo : "+commentData.get("BoardNo"));
    System.out.println("CommentNo : "+commentData.get("CommentNo"));
    System.out.println("CommentGroupNo : "+commentData.get("CommentGroupNo"));
    System.out.println("CommentIndent : "+commentData.get("CommentIndent"));
    System.out.println("CommentContent : "+commentData.get("CommentContent"));		
  }

컨트롤러에서는 이렇게 받았다!

 

방법이 좀 다양해서 이것저것 해봤는데 일단 지금 구성에서는 이렇게 하는 방법만 정상작동한다.

@RequestBody List<Map<String, Object>> 이렇게 받는것도

Gson 이용해서 받는것도 다 해봤지만 안됨...

 

올려주신 분들이 본인 데이터 처리를 어떻게 했다는 예시는 안보여주셔서 사실 차이점을 아직 잘 모르겠다...

JSON을 좀 더 알아봐야할듯 ㅠㅠ

 

+ Recent posts