2016-06-23 4 views
0

Я решаю проблему, связанную с проверкой Hibernate. Я получил исключение org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;Подтверждение весеннего спящего режима

Это мой код в контроллере

@RequestMapping(value = "/student/result", method = RequestMethod.POST) 
public String addStudent(@ModelAttribute("studentForm") @Valid Student student, 
     ModelMap model, BindingResult result) { 
    if (result.hasErrors()) { 
     return "add"; 
    } 
    model.addAttribute("message", "Student added successfully"); 
    model.addAttribute("student", student); 
    return "result"; 
} 

Это моя часть весенне-servlet.xml

<mvc:annotation-driven /> 
<bean class="org.springframework.context.support.ResourceBundleMessageSource" 
     id="messageSource"> 
    <property name="basename" value="messages" /> 
</bean> 

Мои зависимости

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>5.2.4.Final</version> 
</dependency> 

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

У меня нет идеи, что я делаю неправильно. Я сделал это согласно учебнику.

ответ

1

Вы имеют неверный порядок BindingResult и @ModelAttribute. ModelAttribute следует за BindingResult. Пробег

public String addStudent(ModelMap model, @ModelAttribute("studentForm") @Valid Student student, BindingResult result) 
3

Инициатор проверки подлинности Hibernate сам потянет API валидации Java как транзитивную зависимость. Из документов:

«Проект создан

Для того, чтобы использовать Hibernate Validator в рамках проекта Maven, просто добавьте следующую зависимость для вашего pom.xml:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>5.2.4.Final</version> 
</dependency> 

Это транзитивно втягивает в зависимость от API проверки боба (javax.validation: validation-api: {bv_api}). "

Не нужно декларировать зависимость самостоятельно. Тем не менее, ваша проблема, как представляется, связано с некоторыми Спринг несовместимости с версией Hibernate:

Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;

В принципе, я бы пари, что Spring версию вы используете не совместим вообще с Hibernate 5.

Смотрите также:

+0

спасибо. Какую версию я должен использовать? – user3637775

+0

Взгляните на весенние документы. Вы можете либо обновить версию весны, чтобы обеспечить спящий режим 5.x, либо понизить спящий режим до 4.x. –

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

  • Нет связанных вопросов^_^