2015-09-05 73 views
1

我正在使用Jersey啓動器和MongoDB啓動器包使用spring啓動編寫休息服務。所以,我有驗證通過創建豆上頂層文件的工作:在Spring Boot中驗證Mongo文檔

@Configuration 
public class MongoValidationBeans { 

    @Bean 
    public ValidatingMongoEventListener validatingMongoEventListener() { 
     return new ValidatingMongoEventListener(validator()); 
    } 

    @Bean 
    public LocalValidatorFactoryBean validator() { 
     return new LocalValidatorFactoryBean(); 
    } 
} 

我有一個文件:

@Document 
public class SomeDocument { 
    @NotEmpty(message="error message that shows on console") 
    private Set<NonDocumentObject> referencesToOtherDocuments; 
} 

設置嵌入的對象:

public class NonDocumentObject { 
    @NotNull(message="can't see this error message") 
    private ObjectId referenceId; 
    @NotBlank 
    private String referenceInfo; 
} 

驗證豆尊重我的對象集上的@NotEmpty註釋,但他們不尊重NonDocumentObject上的字段上的@NotNull或@NotBlank註釋。我如何獲得驗證來處理嵌入式對象集的字段。

編輯:@有限修復上述問題。另外,當我的頂級文檔發生約束違規時,我可以在控制檯上看到特定的消息,但是tomcat返回一個響應狀態爲400的http錯誤頁面。我怎樣才能發送一個json對象來提供更多關於錯誤?我有一個類

public class GenericExceptionMapper implements ExceptionMapper<Throwable> {} 

其捕獲404,405等的異常並返回相應信息的JSON對象,但不趕蒙戈約束驗證。我想我需要從mongo驗證bean中拋出異常,但找不到指示我如何執行的資源。

我也希望能夠通過自己的驗證將其他對象嵌入到NonDocumentObject中。可能嗎?

+0

在Mongo 3.2中會有驗證。可能會有助於[看一看](http://stackoverflow.com/a/33602507/1090562) –

回答

0

所以@Valid註釋觸發級聯驗證,但我仍然無法弄清楚如何使用異常映射器捕獲驗證錯誤,或者其他一些方法來捕獲驗證錯誤。