2016-07-31 12 views
1

.argNではなく、適切なパラメータ名を返すために、Java 8 ReflectionParameterNameProvider Hibernate Validatorを使用したいと思います。 getPerson.arg0カスタムHibernate Validator Springブート

私は-parameterフラグを使用してアプリケーションをコンパイルしていますし、私のコンテキストに以下の豆を追加した

@Bean 
public javax.validation.Validator validator() { 
    ValidatorFactory validatorFactory = Validation.byDefaultProvider() 
     .configure() 
     .parameterNameProvider(new ReflectionParameterNameProvider()) 
     .buildValidatorFactory(); 

    return validatorFactory.getValidator(); 
} 

しかし、まだ、感謝を古いgetPerson.arg0

任意のアイデアを取得していますか?

答えて

1

検証を実行するためにHibernateとHibernateとの統合に頼っているのであれば、すべての設定をvalidation.xmlに入れ、その設定からHibernate Validatorのブートストラップを行う必要があることがわかりました。

あなたが指定した設定は、バネ固有のものでは機能しますが、残念なことにHibernateとHibernate Validatorの統合では機能しません。

+0

『カスタムParameterNameProviderの使用「を、例8.8に示すように、ブートストラップ時に、プロバイダのインスタンスを渡すのいずれかReflectionParameterNameProviderまたは別のカスタムプロバイダを使用するには、』あなたはドキュメントのいずれかで行うことができます示唆しているようだ、または指定META-INF/validation.xmlファイルの要素の値としてプロバイダの完全修飾されたクラス名 " – ptimson

+0

これは私が最近自分の行使の中で観察したものだと思ったものでした。 – Naros

+0

解決策が見つかりましたhttp://stackoverflow.com/questions/38685811/custom-hibernate-validator-spring-boot/38693000#38693000 – ptimson

1

これは、methodValidationPostProcessor Beanでこれを設定するだけでした。

import javax.validation.Validation; 
import javax.validation.Validator; 
import javax.validation.ValidatorFactory; 
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; 


@Bean 
public Validator validator() { 
    final ValidatorFactory validatorFactory = Validation.byDefaultProvider() 
      .configure() 
      .parameterNameProvider(new ReflectionParameterNameProvider()) 
      .buildValidatorFactory(); 
    return validatorFactory.getValidator(); 
} 

@Bean 
public MethodValidationPostProcessor methodValidationPostProcessor() { 
    final MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor(); 
    methodValidationPostProcessor.setValidator(validator()); 
    return methodValidationPostProcessor; 
} 
関連する問題