0

Money クラスのカスタム Hibernate 検証制約を作成しました。

@Target({METHOD, FIELD, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = MoneyLimitedValidator.class)
@Documented
public @interface MoneyLimited {
    String message() default "{error.validation.money.limited}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

エラーメッセージ以外は正常に動作します。非常に奇妙な動作が見られます: リソース バンドルが見つかり、メッセージは名前で解決されますが、メッセージを名前で解決できない場合に通常表示される特別な文字にラップされます。

??Incorrect sum value._en_EN??

これはnameIncorrect sum value.で受け入れられる正しいメッセージですerror.validation.money.limited。元の私のメッセージは次のようになります。

error.validation.money.limited = Incorrect sum value.

{} 中かっこをメッセージ名から に削除しようとしましMoneyLimited#message()たが、何も変わりません (さらに奇妙です)。

この回答で説明されているように、検証メッセージ バンドルを指定しました。

<annotation-driven validator="validator" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="validationMessageSource" ref="messageSource"/>
</bean>

質問は次のとおりです。メッセージを修正する方法は?

Spring Framework 3.2.4.RELEASEHibernate Validator 4.3.1.Finalを使用しています。

4

1 に答える 1