标签: spring-modules

基于注释的Spring bean验证

我正在研究一种基于注释的方法来使用spring模块验证Spring bean .在本教程中,以下bean(省略了getters和setter)用作示例:

public final class User {  

  @NotBlank  
  @Length(max = 80)  
  private String name;  

  @NotBlank  
  @Email  
  @Length(max = 80)  
  private String email;  

  @NotBlank  
  @Length(max = 4000)  
  private String text;  
}
Run Code Online (Sandbox Code Playgroud)

如果违反特定验证规则,则使用的错误消息应遵循以下格式:

bean-class.bean-propery[validation-rule]=Validation Error message
Run Code Online (Sandbox Code Playgroud)

上面显示的类的示例包括:

User.email[not.blank]=Please enter your e-mail address.  
User.email[email]=Please enter a valid e-mail address.  
User.email[length]=Please enter no more than {2} characters.
Run Code Online (Sandbox Code Playgroud)

消息键包含类名的事实存在一些问题:

  1. 如果重命名该类,则还需要更改消息键
  2. 如果我有另一个类(例如Person),其电子邮件属性与User.email相同,我需要复制消息,例如

    Person.email [not.blank] =请输入您的电子邮件地址.
    Person.email [email] =请输入有效的电子邮件地址.
    Person.email [length] =请输入不超过{2}个字符.

实际上,文档声称可以为特定规则(例如@Email)配置默认消息,如下所示:

email=email address is invalid
Run Code Online (Sandbox Code Playgroud)

如果找不到规则的特定于bean的消息,则应使用此缺省消息.但是,我的经验是,这根本不起作用.

避免重复消息的另一种机制是将错误消息的密钥传递给规则注释.例如,假设我已为@Email规则定义了以下默认错误消息

badEmail=Email address is …
Run Code Online (Sandbox Code Playgroud)

java validation spring-modules

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

spring-modules ×1

validation ×1