2

我正在开发 Web 应用程序,它应该在将日期保存到数据库之前验证日期。所以我正在尝试使用那个spring mvc验证器。但我有一个问题,表单不显示错误消息。

我的用户.jsp:

<form:form class="editUser" method="POST" commandName="user">
    <form:input path="email"/>
    <form:errors path="email"/>
    other fields
</form>

我的控制器:

@RequestMapping(value = "/user/save", method = RequestMethod.POST)
public String save(@Valid @ModelAttribute("user") final User user,
        BindingResult result) throws Exception
{
    if (result.hasErrors()) {
        return "redirect:/addUser";
    } else {
        handler.saveUser(user);
        return "redirect:/userList";
   }
}

我的用户类:

public class User {
    @NotEmpty(message = "Please enter your email addresss.")
    private String email;

    other fields
}

据我在调试模式下看到的,如果我提交空电子邮件,结果包含错误,但错误不会显示在页面上。有人可以帮我吗?

更新: 我试过用RedirectAttributes,但还是不行。

我的控制器:

public String save(@Valid @ModelAttribute("user") final User user,
        BindingResult result) throws Exception
{
    if (result.hasErrors()) {
        redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.user", result);
        redirectAttributes.addFlashAttribute("errors", result.getAllErrors());
        redirectAttributes.addFlashAttribute("user", user);
        return "redirect:/addUser";
    } else {
        handler.saveUser(user);
        return "redirect:/userList";
   }
}
4

1 回答 1

3

不要 redirect在验证失败的情况下。

示例代码:

public String save(@Valid @ModelAttribute("user") final User user,
        BindingResult result) throws Exception
{
    if (result.hasErrors()) {
        return "addUser";
    } else {
        handler.saveUser(user);
        return "redirect:/userList";
   }
}
于 2014-07-31T10:59:11.290 回答