action 返回json
场景:
为Ext.form.Action.Submit增强处理复杂返回json对象
Ext.form.Action.Submit.handleResponse只能处理形如{success:ture,info:''}的json返回数据,与SpringMVC结合使用多有不便,只能如此处理:
很是雅观,鉴于前面改写过Ext.form.Action.Submit.run方法,不妨也改写一下Ext.form.Action.Submit.handleResponse,让其支持复杂一点的json数据
Ext,真的可以随心所欲的
为Ext.form.Action.Submit增强处理复杂返回json对象
Ext.form.Action.Submit.handleResponse只能处理形如{success:ture,info:''}的json返回数据,与SpringMVC结合使用多有不便,只能如此处理:
HashMap<String,String> model = new HashMap<String,String>(); model.put("success", "true"); model.put("info", "保存成功"); return new ModelAndView("/app/customer/list",model);
很是雅观,鉴于前面改写过Ext.form.Action.Submit.run方法,不妨也改写一下Ext.form.Action.Submit.handleResponse,让其支持复杂一点的json数据
Ext.override(Ext.form.Action.Submit,{ handleResponse : function(response){ var opts = this.options; if(this.form.errorReader){ var rs = this.form.errorReader.read(response); var errors = []; if(rs.records){ for(var i = 0, len = rs.records.length; i < len; i++) { var r = rs.records[i]; errors[i] = r.data; } } if(errors.length < 1){ errors = null; } return { success : rs.success, errors : errors }; } //在options中配置root参数,root:'a.b.c' if(opts.root){ var l = opts.root.split('.'); var o = Ext.decode(response.responseText); Ext.each(l,function(n){ if(o[n]) o=o[n]; }); return o; } return Ext.decode(response.responseText); } });
Ext,真的可以随心所欲的