以下是“SpringBoot Validation提示信息国际化配置方式”的完整攻略。
1. 添加依赖
在 pom.xml 文件中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
2. 创建 Resource Bundle 文件
在 src/main/resources 目录下创建一个 messages 目录,在 messages 目录中创建 validation.properties 文件,用于存储提示信息的 key-value 键值对。
以 @NotNull 注解为例,可以添加以下内容:
javax.validation.constraints.NotNull.message=该字段不能为空
其中,javax.validation.constraints.NotNull.message 是默认提示信息,该值不能改变。
3. 配置 LocalValidatorFactoryBean Bean
在配置类上添加 @Bean 注解,同时返回一个 LocalValidatorFactoryBean 实例,并以 SpringBoot 的方式设置 validationMessageSource。
@Configuration
public class ValidatorConfiguration {
@Bean
public Validator validator(MessageSource messageSource) {
LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
validatorFactoryBean.setValidationMessageSource(messageSource);
return validatorFactoryBean;
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages/validation");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
其中,messageSource() 方法用于设置 validationMessageSource,validator() 方法用于将 Validator 注册成 Bean。
4. 使用国际化配置
在使用 @Valid 或 @Validated 注解时,会默认调用 validator() 方法来获取 Validator 对象,并使用 LocalValidatorFactoryBean 对象进行参数校验。
例如,下面代码中使用了 @Validated 注解,并带有 @NotNull 注解:
@RestController
@Validated
public class UserController {
@PostMapping("/user")
public String addUser(@Valid User user) {
// ...
}
}
当 User 对象中的某个字段为空时,会返回上一步中设置的国际化提示信息:
{
"message": "Validation failed",
"errors": [
"该字段不能为空"
]
}
示例1
public class User {
@NotNull(message = "{javax.validation.constraints.NotNull.message}")
private String username;
// ...
}
示例2
public class User {
@NotBlank(message = "{javax.validation.constraints.NotBlank.message}")
@Size(min = 5, max = 16, message = "{javax.validation.constraints.Size.message}")
private String username;
@NotBlank(message = "{javax.validation.constraints.NotBlank.message}")
@Size(min = 8, max = 20, message = "{javax.validation.constraints.Size.message}")
private String password;
// ...
}
以上就是“SpringBoot Validation提示信息国际化配置方式”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot Validation提示信息国际化配置方式 - Python技术站