1. ajax 에서 컨트롤러로 JsonArry 보내기
projectInfo = new Array();
for(var i=0; i < day; i++){
projectInfo.push({
"userId": 'test01',
"workDate": (year+month+(i+1)),
"activityCode": datagrid1.getCellData(2,6),
"activityDetailCode": (datagrid1.getCellData(2,7)),
"compProjectCode": value[0].data.compProjectCode,
"workMonth": month,
"workYear": year,
"manHour": datagrid2.getCellData(2,i),
"isConfirmed": 0
});
}
$.ajax({
url : "/mhtaskmgnt/userinput/save",
type : "POST",
traditional: true,
data: {"projectInfo":JSON.stringify(projectInfo)},
dataType : 'json',
async : false
});
projectInfo는 자바스크립트로 만든 배열이다
ajax를 통해 컨트롤러로 데이터를 보낼때는 Json Data로 변환해서 보내줘야 한다
JSON.stringify(projectInfo)를 사용하면 Json Array 객체가 만들어지기 때문에
traditional: true 옵션을 반드시 붙여줘야 한다
2. 컨트롤러에서 JsonArray 받기
화면에서 ajax를 통해 보낸 JsonArray 객체는 String으로 받아야 한다
@ResponseBody
@RequestMapping("save")
public void save(HttpSession session, String projectInfo) {
}
들어오는 데이터를 확인하기 위해 디버깅을 통해 값을 찍어보면
projectInfo에 데이터가 문자열로 잘 들어온 것을 확인할 수 있다.
3. 문자열을 List객체로 변환하기
내가 받아온 데이터는 문자열이기 때문에 아무런 역할도 할 수가 없다
따라서 이 문자열을 List객체로 저장해야한다
이미 만들어놓은 PersonnelMhVo 형식으로 List객체를 만들어 값을 저장한다
@ResponseBody
@RequestMapping("save")
public void save(HttpSession session, String projectInfo) {
Gson gson = new Gson();
@SuppressWarnings("serial")
List<PersonnelMhVO> mhData = gson.fromJson(projectInfo, new TypeToken<ArrayList<PersonnelMhVO>>(){}.getType());
System.out.println(mhData);
for(int i=0; i<mhData.size(); i++) {
try {
userInputService.insertPersonnelMH(mhData.get(i));
} catch (Exception e) {
log.error("get matcd failed");
resultCode = "fail";
}
}
}
Gson을 사용해 쉽게 변환할 수 있다
디버깅으로 값을 찍어보면
값이 들어온 것을 확인할 수 있다
'Language > Java' 카테고리의 다른 글
[Java] 객체지향 프로그래밍 - 오버라이딩(overriding) (0) | 2024.04.05 |
---|---|
[Java] 객체 지향 프로그래밍 - 상속 (0) | 2024.04.03 |
[Java] Optional이란? (0) | 2023.09.04 |
[JAVA] 자바11 설치 / 환경변수 설정 (Window11) (2) | 2023.07.31 |
[JAVA] 입출력 스트림(자바I/O 스트림) (0) | 2022.02.13 |