2017년 11월 22일 수요일

jQuery Ajax를 통해 전송된 데이터를 Controller에서 List 객체로 받기

jQuery Ajax를 통해 전송된 데이터를 Controller에서 List 객체로 받기

아래는 체크박스를 선택하여 jQuery를 통해 대상 항목들을 List 형태로 넘겨받기 위한 처리임 배열로 받아도 되지만 List로 받아야할 상황에서 구현함


html 부분

<div id="facilitiesInfoFileListDiv">
    <div class="checkbox">
        <input id="atchFileIdList0" name="fileSn" value="2" type="checkbox">
        <label for="atchFileIdList0">mou.jpg</label>
    </div>
    <div class="checkbox">
        <input id="atchFileIdList1" name="fileSn" value="3" type="checkbox">
        <label for="atchFileIdList1">korea.png</label>
    </div>
</div>
<div class="overflow-hidden">
    <a href="javascript:void(0)" id="deleteFacilitiesInfoFileBtn" class="btn btn-default btn-delete pull-right">선택삭제</a>
</div>

jQuery 부분

/**
 * 파일 삭제 버튼을 누르면
 */
$('#deleteFacilitiesInfoFileBtn').click(function() {
    //등록할지 물어보기
    if (!confirm('사진을 삭제하시겠습니까?')) {
        return false;
    }

    //매개변수값 정리 : @RequestBody List fileVOList로 담기위한 사전 작업
    var arr = new Array();
    var obj = null;
    $('#facilitiesInfoFileForm input[name="fileSn"]:checked').each(function(i) { //check 된값 배열에 담기
        obj = new Object();
        obj.atchFileId = $('#facilitiesInfoFileForm input[name="atchFileId"]').val();
        obj.fileSn = $(this).val();
        arr.push(obj);
    });
  
    //입력값 전송
    $.ajax({
        url : contextPath+'/mgr/main/deleteFacilitiesInfoFile.ajax',
        type : 'POST',
        data : JSON.stringify(arr),
        dataType : 'json',
        contentType : 'application/json; charset=UTF-8',
        success : function(result) {
            //console.log("result : "+JSON.stringify(result));
            //console.log("message : "+result.message );
            alert(result.message);
        },
        error : function(request,status,error) {
            //console.log("code:"+request.status+"\n\n"+"message:"+request.responseText+"\n\n"+"error:"+error);
            //alert($(request.responseText.replace(/(\r\n|\n|\r)/gm,"")).text());
            alert("처리에 실패하였습니다.\ncode:"+request.status+"\n"+"error:"+error);
        },
        complete : function() {
            selectFacilitiesInfoFileList(); //시설정보 파일목록 새로 불러오기
        }
    });
});

JAVA 부분

/**
 * 이후 컨트롤러에서 해당 리스트를 받을 수 있었다
 */
@RequestMapping("/mgr/main/deleteFacilitiesInfoFile.ajax")
public @ResponseBody Map deleteFacilitiesInfoFile(@RequestBody List fileVOList) throws Exception {
    LOGGER.debug("fileVO.getFileVOList().size():"+fileVOList.size());
    fileMngService.deleteFileInfs(fileVOList);

    Map result = new HashMap();
    result.put("message", egovMessageSource.getMessage("success.common.delete"));
    return result;
}