2015-09-05 3 views
1

Я пишу службу отдыха, используя весенний ботинок с стартовыми пакетами 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 с его собственной проверкой. Было бы возможно?

+0

В Mongo 3.2 будет проведена проверка. Может быть, это может быть полезно [взглянуть] (http://stackoverflow.com/a/33602507/1090562) –

ответ

0

Таким образом, аннотация @Valid запускает проверку каскада, но я до сих пор не могу понять, как поймать ошибки проверки с помощью механизма отображения исключений или каким-то другим способом уловить ошибки проверки.

Смежные вопросы