【问题标题】:Validating Mongo Documents in Spring Boot在 Spring Boot 中验证 Mongo 文档
【发布时间】:2015-09-05 20:05:46
【问题描述】:

我正在使用带有 Jersey 和 MongoDB 入门包的 Spring Boot 编写一个休息服务。因此,我通过创建 bean 对顶级文档进行了验证:

@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;
}

验证bean 尊重我的对象集上的@NotEmpty 注释,但它们不尊重我的NonDocumentObject 上的字段上的@NotNull 或@NotBlank 注释。如何在嵌入的对象集的字段上进行验证。

编辑:@Valid 修复了上述问题。

另外,当我的顶级文档发生约束冲突时,我可以在控制台上看到特定消息,但 tomcat 返回一个响应状态为 400 的 http 错误页面。我如何才能发送一个包含更多信息的 json 对象错误?我有课

public class GenericExceptionMapper implements ExceptionMapper<Throwable> {}

捕获 404、405 等异常并返回具有适当信息的 json 对象,但不捕获 mongo 约束验证。我想我需要从 mongo 验证 bean 中抛出异常,但找不到指导我如何去做的资源。

我还希望能够通过自己的验证将其他对象嵌入到 NonDocumentObject 中。有可能吗?

【问题讨论】:

  • 在 Mongo 3.2 中会有验证。可能对take a look有帮助

标签: spring mongodb validation jersey


【解决方案1】:

所以@Valid 注解触发了级联验证,但我仍然不知道如何使用异常映射器捕获验证错误,或者用其他方法捕获验证错误。

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 2020-10-18
    • 2021-01-30
    • 2021-02-07
    • 1970-01-01
    • 2016-07-24
    • 2023-02-08
    • 2016-06-18
    • 2020-10-31
    相关资源
    最近更新 更多