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



我有一个简单的注册表形式,验证工作很好。类似这样的东西:

@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 annotation完成了它的工作,如果我的表单上有任何错误,它们会显示在*.vm视图的正确位置。

但现在我想使用AJAX来发送我的表单,所以我把我的控制器改为:

@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

您可以为验证响应返回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
        }
    }
});

相关内容

最新更新