1.目的
执行controller后,可能顺利执行或发送异常,通过数据记录,在前台进行显示执行结果
2.工具类
声明json工具类, 用于包装数据
JsonResult.java
code
用于表示是否完成请求
data
同时声明put 和get方法,用于 存入和提取 自定义数据
/**
* 封装AJAX传输数据
*
*
*/
public class JsonResult {
private int code;
private Map<String, Object> data;
public JsonResult() {
this.code = 0;
}
public JsonResult(int code) {
this.code = code;
}
public JsonResult(int code, Map<String, Object> map) {
this.code = code;
this.data = map;
}
public void put(String key, Object val) {
if (data == null) data = new HashMap<String, Object>();
data.put(key, val);
}
public Object get(String key) {
if (data != null) return data.get(key);
return null;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
}
3.在controller中使用
//声明返回类
JsonResult result = new JsonResult();
//设置返回字段
result.setCode(Constants.ERROR_CODE_BUSINESS);
result.put("nameExisted", "yes");
//设置返回response
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().print(JSON.toJSONString(result));
JSON.toJsonString
将对象转为json字符串,方便前台提取
案例
class JsonResultTest {
JsonResult jsonResult=new JsonResult();
@Test
void put() {
jsonResult.put("1", "yes");
jsonResult.put("2", "no");
System.out.println(jsonResult);
System.out.println(JSON.toJSONString(jsonResult));
}
}
输出结果
com.atoz.cbtsys.common.JsonResult@61d47554
{"code":0,"data":{"1":"yes","2":"no"}}
4.ajax接受数据
在success函数中取出填入的数据
success: function (data) {
if (data['code'] == 0) {
$('#group-add-edit-modal').modal('hide');
$('#group-reset').click();
$("body").css("padding-right", "0px");
bootbox.alert("添加成功");
planIndex.initGroupListByPlan(planIdChoosed);
} else if( data['data']['nameExisted']=="yes") {
bootbox.alert("名称 “"+ data['data']['repeatedName'] + "” 已存在,请重新输入名称");
}
},
data里放什么,取什么