直接上代码:
第一: Controller类的方法:
@ResponseBody
@RequestMapping("/USER/Check")
public Map<String,String> userManagePost(Model model, @Valid User user, BindingResult bindingResult) {
//存放错误信息-对应相关的组件名称:
Map<String,String> errorMap = new HashMap<String,String>();
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
for (FieldError errorComponen : fieldErrors) {
String field = errorComponen.getField();
String defaultMessage = errorComponen.getDefaultMessage();
errorMap.put(field, defaultMessage);
}
//页面回显:
model.addAttribute("errorMap", errorMap);
return errorMap;
}
重点来了: 怎么在Ajax里面 获取Controller中 返回的Json格式的 Map 里面的错误信息?
先加个小插件: <script type="text/javascript" src="/js/jsonHandler.js"></script>
//需要jsonHandler.js文件-百度就可下载 转化表单Dom对象为Json对象
//按钮点击提交
$("#submitButton").click(function(){
var json = $('#formTag').serializeObject();
$.ajax({
type: 'POST',
url: '/USER/Check',
dataType: "json",
data:json,
timeout: 5000,
cache: false,
success: function (data) {
var errorMmap = data;
for(var key in errorMmap){
if(key=="email")
$("#errorEmail").html(errorMmap[key]);
if(key=="realName")
$("#errorRealName").html(errorMmap[key]);
if(key=="password")
$("#errorPassword").html(errorMmap[key]);
if(key=="userName")
$("#errorUserName").html(errorMmap[key]);
// alert("键:"+key+"值:"+errorMmap[key]);
}
},
error: function(err){
alert("出错了哦!");
}
});
});
第三:还差提示框
<input id="email" name="email" type="text" /> <span><font id="errorEmail" color="red"></font></span>
<input id="realName" name="realName" type="text" /> <span><font id="errorRealName" color="red"></font></span>
<input id="password" name="password" type="text"/> <span><font id="errorPassword" color="red"></font></span>
<input id="userName" name="userName" type="text" /> <span><font id="errorUserName" color="red"></font></span>
第四:还有个错误校验 注解POJO --下面的是 User的属性
大功告成! 不成功的找我。。。。我回复你!