【问题标题】:Spring MVC custom validation messagesSpring MVC 自定义验证消息
【发布时间】:2016-02-02 12:16:40
【问题描述】:

在我的 Spring MVC 项目中,我创建了一个这样的模型类:

public class LoginModel {

    @NotBlank 
    private String username;

    // .. getter and setter...
}

提交表单后,将调用控制器方法。该方法可能如下所示:

@RequestMapping("/submitLogin")
    public String submitLogin(@ModelAttribute("LM") @Valid LoginModel lm, BindingResult result) throws UnexpectedException {

        if(result.hasErrors()){
             return "Login";
        } else {
            // do something...
        }
}

然后-回到jsp,我使用<form:errors>标签来显示错误:

<form:errors path="username"/>

将显示一条错误消息 - 可以正常工作。但我想定义一个应该覆盖默认消息的消息资源。

可能是这样的

<form:errors path="username" resource="error.login"/>

如何做到这一点?

【问题讨论】:

标签: java spring validation spring-mvc


【解决方案1】:

您可以像这样在模型类中定义您的消息:

@NotBlank(message = "Please enter your username.")
private String username;

【讨论】:

  • @CodeCannibal 当然可以,但我更愿意像 Orest 的评论中那样进行 i18n-messages 和 JSR-303 bean 验证,因为从长远来看,这里的示例很难维护。
  • 您可以在属性文件中添加您的消息。并在xml文件中配置文件。属性文件是这样的 NotBlank.LoginModel .username= please enter your username
  • 当然是这样。但同样,将其留给已经内置的机制更容易。看看为username 定义一个自定义消息是多么容易,同时仍然为@NotBlank 定义一个默认自定义消息。
  • 好的。我使用上述两种方法打印错误消息。您的期望是什么?告诉我清楚。
  • @CodeCannibal 将System.out.println("\n" + result.getFieldErrors() + "\n"); 放入您的控制器中。您将获得包含数组codes [NotBlank... ] 的行。在这里,您可以看到什么可以用作键。 (我通常很擅长NotBlank.username = ...
猜你喜欢
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
相关资源
最近更新 更多