使用AJAX和Spring 3显示错误消息

时间:2011-05-26 19:27:35

标签: ajax spring validation response

我有一个简单的注册表单,验证工作正常。像这样:

@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

2 个答案:

答案 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
        }
    }
});