spring-data-rest 中没有来自 Validator 的错误消息
No error message from Validator in spring-data-rest
按照文档 http://docs.spring.io/spring-data/rest/docs/2.4.2.RELEASE/reference/html/#validation 我为 spring-data-rest 存储库调用设置了一个非常简单的验证器:
public class DealValidator implements Validator {
@Override
public boolean supports(Class<?> aClass) {
return Deal.class.isAssignableFrom(aClass);
}
@Override
public void validate(Object o, Errors errors) {
errors.reject("deal.error", "No deal");
}
}
这是配置
@Override
protected void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
validatingListener.addValidator("beforeCreate", new DealValidator());
}
@Configuration
static class I18nConfiguration {
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource source = new ResourceBundleMessageSource();
source.setBasename("classpath:messages");
return source;
}
}
配置似乎没问题,正确调用了验证器,http 请求产生错误响应,但没有返回错误文本,既不是来自 messages.properties 也不是来自默认文本。这是一个错误吗?
我遇到了同样的问题。 spring-data-rest.
仅对引用字段的验证错误进行序列化
所以你可以使用 rejectValue(String field, String errorCode, String defaultMessage)
而不是 reject
有关实施细节,请参阅 org.springframework.data.rest.webmvc.support.RepositoryConstraintViolationExceptionMessage
。该实现仅处理 org.springframework.validation.Errors#getFieldErrors()
.
按照文档 http://docs.spring.io/spring-data/rest/docs/2.4.2.RELEASE/reference/html/#validation 我为 spring-data-rest 存储库调用设置了一个非常简单的验证器:
public class DealValidator implements Validator {
@Override
public boolean supports(Class<?> aClass) {
return Deal.class.isAssignableFrom(aClass);
}
@Override
public void validate(Object o, Errors errors) {
errors.reject("deal.error", "No deal");
}
}
这是配置
@Override
protected void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
validatingListener.addValidator("beforeCreate", new DealValidator());
}
@Configuration
static class I18nConfiguration {
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource source = new ResourceBundleMessageSource();
source.setBasename("classpath:messages");
return source;
}
}
配置似乎没问题,正确调用了验证器,http 请求产生错误响应,但没有返回错误文本,既不是来自 messages.properties 也不是来自默认文本。这是一个错误吗?
我遇到了同样的问题。 spring-data-rest.
仅对引用字段的验证错误进行序列化所以你可以使用 rejectValue(String field, String errorCode, String defaultMessage)
而不是 reject
有关实施细节,请参阅 org.springframework.data.rest.webmvc.support.RepositoryConstraintViolationExceptionMessage
。该实现仅处理 org.springframework.validation.Errors#getFieldErrors()
.