서버 연동
JQuery의 ajax를 이용하여 화면과 서버간의 json형태의 데이터를 송·수하는 예제입니다.
코드예
//조회
var gridData = [];
function searchRow() {
datagrid.lockGrid(); //그리드 잠금(로딩 이미지 포함)
$.ajax({
url : "<c:url value='/'/>sampleTestSearch.do",
type : "POST",
success : function(data) {
gridData = JSON.parse(data.result);
datagrid.refresh(); //데이터 초기화
datagrid.clearStatus(); //상태정보 초기화
}
});
datagrid.lockGrid(false); //그리드 잠금 해제
}
//저장
function saveRow() {
var updateData = datagrid.getUpdateData(true); //상태정보(insert/update/delete)가 포함된 행 데이터
if(updateData.length > 0) {
datagrid.lockGrid(); //그리드 잠금(로딩 이미지 포함)
$.ajax({
url : "<c:url value='/'/>sampleTestSave.do",
contentType : "application/json; charset=utf-8",
data : {data : JSON.stringify(updateData)},
dataType : "json",
type : "POST",
success : function(data) {
if(data.result == "success") {
alert("저장되었습니다.");
datagrid.clearStatus(); //상태정보 초기화
} else {
alert("저장도중 에러가 발생하였습니다.");
}
datagrid.lockGrid(false); //그리드 잠금 해제
}
});
} else {
alert("저장할 내용이 없습니다.");
}
}
//조회
@RequestMapping(value = "/sampleTestSearch.do")
public ModelAndView SampleTestSearch(@ModelAttribute("searchVO")SampleDefaultVO searchVO,
HttpServletRequest request, HttpServletResponse response, ModelAndView mav) throws Exception {
List<?> sampleTestSearchList = new ArrayList<SampleDefaultVO>();
sampleTestSearchList = sampleTestService.sampleTestSearchList(searchVO);
Gson gson = new Gson();
mav.addObject("result", gson.toJson(sampleTestSearchList));
mav.setViewName("jsonView");
return mav;
}
//저장
@RequestMapping(value = "/sampleTestSave.do")
public ModelAndView sampleTestSave(HttpServletRequest request, ModelAndView mav) {
String data = request.getParameter("data");
String result = "fail";
try {
result = sampleTestService.saveGridData(data);
} catch (Exception e) {
log.debug(e.getMessage());
}
mav.addObject("result", result);
mav.setViewName("jsonView");
return mav;
}
//저장
@Override
public String saveGridData(String param) throws Exception {
String result = "fail";
try {
JSONParser jParser = new JSONParser();
// JSON String Data를 JSON Array로 변환
JSONArray jArr = (JSONArray) jParser.parse(param);
int resultCnt = 0;
for(int i = 0; i < jArr.size(); i++) {
JSONObject jObj = (JSONObject) jArr.get(i);
SampleTestVO stv = new SampleTestVO();
Gson gson = new Gson();
// 방법1. JSON 데이터를 vo에 대입
stv = gson.fromJson(jObj.get("data").toString(), SampleTestVO.class);
// 방법2. JSON 데이터를 Map 형태로 대입
Map map = new HashMap();
map = gson.fromJson(jObj.get("data").toString(), Map.class);
//상태값에 따라 분기처리 (i: insert, u: update, d: delete)
if("i".equals(jObj.get("status"))) {
resultCnt = sampleTestMapper.insertSampleTest(stv);
} else if("u".equals(jObj.get("status"))) {
resultCnt = sampleTestMapper.updateSampleTest(stv);
} else if("d".equals(jObj.get("status"))) {
resultCnt = sampleTestMapper.deleteSampleTest(stv);
}
}
if(resultCnt > 0) {
result = "success";
}
} catch (Exception e) {
e.printStackTrace();
throw processException("fail.common.sql", e);
}
return result;
}