간혹 ajax 통신으로 data 배열을 전송할때 올바른 형식으로 보냈는데도, BackEnd 단에서 이 데이터를 읽지 못하는 현상이 있다.
var dataSet = {
"userName" : userName,
"userID" : userID,
"userPassword" : userPassword,
"userDepartment" : userDepartment,
"userNum" : userNum
};
$.ajax({
url: "/updateRow",
method:"POST",
data: dataSet,
traditional : true,
success: function(response){
console.log(response);
},
error : function(error){
console.log(error);
}
});
예를 들면 이러한 스크립트로 데이터를 보내서,
@ResponseBody
@RequestMapping(value = "/updateRow", method = RequestMethod.POST )
public String updateRow(@RequestParam(value="userName") String[] user_name,
@RequestParam(value="userID") String[] user_ID,
@RequestParam(value="userPassword") String[] Password,
@RequestParam(value="userDepartment") String[] Department,
@RequestParam(value="userNum") String[] userNum ) throws Exception
{
Map param = new HashMap();
for(int i=0;i<user_name.length;i++)
{
param.clear();
param.put("userName",user_name[i]);
param.put("userID",user_ID[i]);
param.put("userPassword",Password[i]);
param.put("userDepartment",Department[i]);
param.put("userNum",userNum[i]);
oracle.selectOne("com.nanum.mes.service.dao.BoardDAO.updateRow",param);
}
return "Success";
}
이렇게 컨트롤러에서 받는다고 쳤을때, ajax 모듈에 traditional 옵션이 없으면, 데이터를 전혀 읽어오지 못하는 현상이 있더라... 배열로 파라미터를 받을때는 traditional : true를 설정해줄것.. (이걸 하지 않으면 배열을 못읽음)