【问题标题】:Spring MVC validation doesn't show error messageSpring MVC 验证不显示错误消息
【发布时间】:2014-09-23 06:46:27
【问题描述】:

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

我的 user.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";
   }
}

【问题讨论】:

    标签: java spring spring-mvc spring-validator


    【解决方案1】:

    不要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";
       }
    }
    

    【讨论】:

    • 但我必须这样做,因为我的 JSP 是 addUser.jsp 并且保存方法映射到 addUser/save,所以如果我只使用“addUser”,那将是错误的行为。我尝试使用RedirectAttributes,但它不起作用。
    • 只需将请求转发到同一页面。
    • 您可以查看这个相关问题,它可能会提供答案 - 也许您的表单正在重定向中重新初始化,或者使用 ModelAndView...stackoverflow.com/questions/2543797/…
    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    相关资源
    最近更新 更多