【发布时间】:2018-12-06 10:30:43
【问题描述】:
我将org.springframework.validation 与 JSR-303 注释混合在一起。
JSR-303 注释:
public class Model{
private String type;
private State state;
@NotNull(message = "{comment.notnull}")
private String comment;
}
Spring 框架验证:
@Component
public class ModelValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return Model.class.equals(clazz);
}
@Override
public void validate(Object obj, Errors errors) {
Model model = (Model) obj;
if (eventModel.getState() == null) {
errors.reject("state", "error.state.invalidState");
}
}
}
我的ValidationMessages_en.properties
error.state.invalidState=Invalid state.
comment.notnull=Comment not null.
然后我的配置:
@Configuration
public class ValidationConfig {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("ValidationMessages");
return messageSource;
}
}
当我运行我的 springboot 应用程序时,插值适用于 JSR-303,但不适用于自定义验证器,我错过了什么吗?试了很久还是搞不定。
结果:
"error_messages": [
{
"error_message": "Comment not null"
},
{
"error_message": "error.state.invalidState"
}
]
【问题讨论】:
标签: spring-boot java-8 bean-validation