Я пишу службу отдыха, используя весенний ботинок с стартовыми пакетами Jersey и MongoDB. Поэтому у меня есть проверка работы над документами на высшем уровне путем создания бобы:Подтверждение документов Mongo весной Boot
@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 на моем наборе объектов, но они не учитывают аннотации @NotNull или @NotBlank в полях на моем объекте NonDocumentObject. Как я могу получить валидацию для работы над полями встроенного набора объектов.
EDIT: @ Valid исправляет вышеуказанную проблему.
Кроме того, когда на моем документе верхнего уровня происходит нарушение ограничения, я вижу конкретное сообщение на моей консоли, но tomcat возвращает страницу с ошибкой http с состоянием ответа 400. Как я могу вместо этого отправить объект json с дополнительной информацией о Ошибка? У меня есть класс
public class GenericExceptionMapper implements ExceptionMapper<Throwable> {}
, который ловит 404, 405, и т.д. исключения и возвращает объект JSON с соответствующей информацией, но не поймать Монго ограничений валидаций. Я думаю, что мне нужно выкидывать исключения из фанов проверки монго, но не могу найти ресурсы, которые подсказывают мне, как это сделать.
Я также хочу, чтобы встроить другие объекты в NonDocumentObject с его собственной проверкой. Было бы возможно?
В Mongo 3.2 будет проведена проверка. Может быть, это может быть полезно [взглянуть] (http://stackoverflow.com/a/33602507/1090562) –