我有一个简单的注册表单,验证工作正常。像这样:
@RequestMapping(value = "/email", method = RequestMethod.POST)
public String changeEmail(@Valid @ModelAttribute("editEmail") EditEmailForm editEmailForm, BindingResult result) {
if (result.hasErrors()) {
return "editAccount";
}
userService.changeEmail(editEmailForm);
return "redirect:/";
}
和@Valid注释完成了它的工作,如果我的表单上有任何错误,它们会显示在我的* .vm视图上的正确位置。
但是现在我想使用AJAX发送我的表单,所以我将Controller更改为:
@RequestMapping(value = "/email", method = RequestMethod.POST)
@ResponseBody
public String changeEmail(@Valid @ModelAttribute("editEmail") EditEmailForm editEmailForm, BindingResult result) {
if (result.hasErrors()) {
return "ERROR";
}
userService.changeEmail(editEmailForm);
return "SUCCESS";
}
现在,如果验证失败,我可以显示ERROR消息,但是如何显示与之前相同的消息?例如,我写了一个错误的电子邮件地址,我希望看到一条错误的电子邮件地址的消息。是否有可能实现它?
由于
的Dawid
答案 0 :(得分:1)
您可以为验证响应返回JSON字符串。假设您有AjaxResponse
类
AjaxResponse{
model; //form attribute
status; // OK or ERROR
description; // message description such as error message
}
答案 1 :(得分:0)
在服务器端再次检查以检查错误的电子邮件地址。如果电子邮件地址错误,则返回“BAD_EMAIL”之类的内容,并在客户端正确处理。
if (/* Email is bad */) {
return "BAD_EMAIL";
}
在客户端,假设你正在使用dojo,
dojo.xhrPost({
url : "/email",
...various args
load : function (response, ioArgs) {
if (response === "BAD_EMAIL") {
// show bad email message
}
}
});