2012-04-22 3 views
2

Я хотел создать веб-приложение, которое будет использовать neo4j с данными Spring. Я использую Maven для обработки зависимостей и построения, и у меня возникают проблемы с этим из-за зависимостей spring-data-neo4j.Проблемы с Spring MVC с javax.validation

Когда я включаю весну-данные-Neo4j, она включает в себя javax.validation, но когда это включено, у меня есть проблемы с помощью <mvc:annotation-driven />, чтобы забрать мой @Controller и @RequestMapping аннотаций, который вызывает этот вопрос:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to find a default provider 

Если исключить javax.validation как зависимость от spring-data-neo4j, я получаю ошибки валидатора при попытке получить доступ к Neo4jTemplate:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'indexController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.data.neo4j.support.Neo4jTemplate org.neuralsandbox.controllers.IndexController.neo4jTemplate; nested exception is java.lang.NoClassDefFoundError: javax/validation/Validator 

есть ли способ решить эту проблему?

+0

Мы собираемся сделать зависимость проверки необязательной, но это более сложно, чем я думал. –

+1

Благодарим вас за ответ. Мое решение состояло в том, чтобы добавить Hibernate Validator, и тогда все сработало. – Nicholas

ответ

3

Один из возможных вариантов, особенно если вам действительно нужна функция javax.validation, заключается в том, чтобы добавить реализацию класса javax.validation (например, Hibernate Validator) в путь к классам.

Если вам не нужен javax.validation, вы должны быть в состоянии устранить эту ошибку, создав манекен org.springframework.validation.Validator и настроив его как <mvc:annotation-driver validator = "..." />.

+1

Ну * I * не нужно 'javax.validation', но' spring-data-neo4j' делает, но я могу пойти с вашим решением, включая 'javax.validation', а затем просто перевернуть мой собственный' Validator' для '' – Nicholas

4

Кажется, что существует зависимость от проверки подлинности-api. он решил мою проблему, просто добавив следующую зависимость времени выполнения.

<dependency> 
    <groupId>javax.validation</groupId> 
    <artifactId>validation-api</artifactId> 
    <version>1.1.0.Final</version> 
    <scope>runtime</scope> 
</dependency> 

Надеюсь, что эта проблема также будет устранена.

+0

Вы не представляете, насколько это просто вытащило меня из-под огня. Спасибо. –