7

私はこのような簡単なクラスを持っています、

import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;

public class Form implements Serializable {
   @NotNull
   @Length(min = 2, max = 20)
   private String lastName;
}

クラスパスにmessages.propertiesファイルがあります。次に、次のようにSpringBeanを介してロードされます。

<bean name="validator"
      class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="validationMessageSource">
        <ref bean="resourceBundleLocator"/>
    </property>
</bean>

<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>classpath*:messages.properties</value>
        </list>
    </property>
</bean>

私が欲しいのは、検証されたBeanに従ってカスタマイズされたエラーメッセージを取得することです。つまり、各ConstraintViolationオブジェクトに、デフォルトのエラーメッセージではなく、プロパティファイルで定義したエラーメッセージを返してもらいたいのです。この形式{xxx.yyyy.zzzz}のような値でメッセージプロパティを追加し、messages.propertiesファイルからそのメッセージを参照することは可能ですか?

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    Set<ConstraintViolation<Form>> inputErrors = validator.validate(form); 

@NotNullと@Lengthのデフォルトのメッセージをカスタマイズしたい場合、どうすればよいですか?

Hibernate検証に関する私の経験はゼロです。サンプルコードまたはステップバイステップガイド をいただければ幸いです。

4

1 に答える 1

4

メッセージ値を保持するこのリソースバンドルファイルがあります。

@NotNullメッセージを手動でオーバーライドするには、ieアノテーションへのパスを使用する必要があると思います。のようなjavax.validation.constraints.NotNull=Notnull error happened! ものかそのようなもの!

ここを見てください:

HibernateValidator-エラーメッセージ

お役に立てば幸い

于 2011-08-17T13:24:02.903 に答える