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().