2016-01-18 107 views
0

繼文檔http://docs.spring.io/spring-data/rest/docs/2.4.2.RELEASE/reference/html/#validation我設立了一個彈簧數據休息庫調用一個很簡單的驗證:沒有錯誤消息彈簧數據休息

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-request會產生一個錯誤響應,但是不會從messages.properties或默認文本返回錯誤文本。這是一個錯誤?

回答

2

我遇到了同樣的問題。只有引用字段的驗證錯誤才被spring-data-rest序列化。

所以,你可以使用rejectValue(String field, String errorCode, String defaultMessage)代替reject

org.springframework.data.rest.webmvc.support.RepositoryConstraintViolationExceptionMessage的實施細節。實施僅處理org.springframework.validation.Errors#getFieldErrors()

+0

是的,rejectValue帶來了消息。謝謝!我會嘗試打開一個錯誤報告。 – Gregor

+1

查看錯誤報告:https://jira.spring.io/browse/SPR-13877 – Gregor