Я смешал оба 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");
}
}
}
My 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"
}
]