json信息的后台到前台的传输

公共方法:


/**
 * 实际返回的是 response.setContentType("text/html;charset=utf-8");
 * 
 * @param o
 */
public void writeJson(Object o) {
	String json = getJsonString(o);
	try {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write(json);
	} catch (IOException e) {
		e.printStackTrace();
	}
}

public String getJsonString(Object o) {
	ObjectMapper om = new ObjectMapper();
	StringWriter sw = new StringWriter();
	try {
		JsonGenerator jg = new JsonFactory().createJsonGenerator(sw);
		om.writeValue(jg, o);
		jg.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
	return sw.toString();
}

Json形式:

  • 形式一:
{"total":29,"rows":[{"id":1,"brandName":"兄弟","isvalid":"已启用"},{"id":2,"brandName":"西红柿","isvalid":"已启用"}]}

后台实现:

List<AuxiliaryBrand> list =  auxiliaryService.getAuxiliaryBrand(paramMap,intPage,number,user);

int count = auxiliaryService.getAuxiliaryBrandCount(paramMap,user);

Map<String, Object> map = new HashMap<String, Object>();
   map.put("total", count);
   map.put("rows", list2);

this.writeJson(map);//顶部公共方法

前台获取:

 onLoadSuccess: function (data) {
     if (data.total == 0) {
             //active
     }

     var rows = data.rows;
 }
  • 形式二:
{"success":false,"msg":"品牌名称【兄弟】已存在!请重新输入!","obj":null}

后台:

 /**
 * 品牌重复性检索
 */
public void repeatCheckAuxiliaryBrand(){
	String brandName = request.getParameter("brandName");
	String actionType = request.getParameter("actionType");
	int checkFlag=  auxiliaryService.repeatCheckAuxiliaryBrand(brandName,actionType);
	Json j=new Json();
	if(checkFlag==2){
		j.setSuccess(false);
		j.setMsg("品牌名称【"+brandName+"】已存在!请重新输入!");
	}else{
		j.setSuccess(true);
		j.setMsg(actionType);
	}
	this.writeJson(j);//顶部公共方法
}

Json对象j的数据

response.getWriter().write(json);后的值

传到前台接收:

 /**
 * 重复检验
 */
function repeatCheck(actionType){
	var brandName = $('#brandNames').textbox('getValue');
	var url = context_path + '/auxiliary/repeatCheckAuxiliaryBrand.do';
	$.ajax({
		url : url,
		data : {
			brandName : brandName,
			actionType :actionType
		   },
		dataType : 'json',
		success : function(result) {
			if (result.success){
				var action=result.msg;
				submitSave(action);
				return true;
			}else{
				$.messager.alert('操作提示', result.msg,'warning');
				return false;
			}
			}
	});
}
原文地址:https://www.cnblogs.com/wjup/p/10576088.html