Hibernateのバリデータでカスタムエラーメッセージを追加する私は、このような単純なクラスを持っているどのよう
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ファイルを持っています。
<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の検証に
私の経験は、ゼロある、ステップガイドによって任意のサンプルコードまたは工程が理解されるであろう。
うんフリッツを助け、それは本当だが、私は多くの@NotNullを持っているので、私はデフォルトmessageTemplateパスを上書きしたくないともちろん他の注釈)をFormクラスに追加します。私はそれぞれのプロパティに対して特定のエラーメッセージを追加したいと思います。カスタムMessageInterpolatorを実装することなく**簡単な方法がありますか?私はカスタムメッセージ補間の実装のカップルを見つけましたが、私はこれらのいずれかを理解していません。完全なソースコードでもっとも簡単な解決策を教えてください。 – nash
また、この{vvvv.ssss.rrrt.message}のような形式で各検証アノテーションのメッセージ属性をオーバーライドしようとしましたが、ConstraintViolationのgetMessageを呼び出すと、そのメッセージではなくそのまま出力されます。 – nash
私は見る!私の心に来る唯一の方法は、メッセージを保持するカスタムバリデータを作成することです! @MyNotNull +メッセージのように? か、この ' ValidatorFactory工場= Validation.buildDefaultValidatorFactory(のようなものを行うことができます)。 バリデータのバリデータ= factory.getValidator(); 車の車=新しい車(null);>を設定します。constraintViolations = validator.validate(car); assertEquals(1、constraintViolations.size()); assertEquals( "nullでない可能性があります"、constraintViolations.iterator()。next()。getMessage()); ' とオブジェクトのメッセージを傍受する! –
stereoscope