2016-06-23 19 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;春の休止状態の確認

これはこれは

<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> 

春-servlet.xmlの私の一部です

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

コントローラでの私のコードです私は何が間違っているのか分かりません。私はチュートリアルに従ってそれをしました。

答えて

1

ますBindingResultと@ModelAttributeの順序が正しくありません。 ModelAttributeの後にはBindingResultを続けます。 お試しください

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

Hibernateバリデータの依存関係自体は、Java検証APIを推移的な依存関係として取得します。ドキュメントから:

「プロジェクトは、Mavenプロジェクト内Hibernateバリを使用するためには

を設定し、単にあなたのpom.xmlに以下の依存関係を追加します。これは、過渡的に引っ張る

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

をBean検証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;

基本的に、私はあなたが使用している春のバージョンが休止状態5.

と全く互換性がないことを賭けるだろう

も参照してください:

+0

ありがとうございます。私はどのバージョンを使うべきですか? – user3637775

+0

春の文書を見てください。 Hibernate 5.xとの互換性を保証するためにSpringバージョンをアップグレードするか、または、Hibernateを4.xにダウングレードすることができます。 –