问题描述
|
我有一个简单的注册表,验证工作正常。像这样:
@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\";
}
现在,如果验证失败,我可以显示错误消息,但我怎么能如前面显示相同的消息?例如,我输入了错误的电子邮件地址,并且我想看到一条消息,指出电子邮件地址错误。有可能实现吗?
谢谢
达维德
解决方法
您可以为验证响应返回JSON字符串。假设您有
AjaxResponse
班
AjaxResponse{
model; //form attribute
status; // OK or ERROR
description; // message description such as error message
}
,只需在服务器端再次检查以检查错误的电子邮件地址即可。如果电子邮件地址错误,则返回\“ 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
}
}
});