在spring-data-rest中没有来自Validator的错误消息

时间:2016-01-18 16:44:22

标签: spring-data spring-data-rest

遵循文档http://docs.spring.io/spring-data/rest/docs/2.4.2.RELEASE/reference/html/#validation我为spring-data-rest存储库调用设置了一个非常简单的Validator:

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和默认文本返回错误文本。这是一个错误吗?

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。 Spring-data-rest仅序列化引用字段的验证错误。

因此,您可以使用rejectValue(String field, String errorCode, String defaultMessage)代替reject

有关实施细节,请参阅org.springframework.data.rest.webmvc.support.RepositoryConstraintViolationExceptionMessage。实现只是处理org.springframework.validation.Errors#getFieldErrors()