私は、Springブートと国際化でjavax検証アノテーションを使用しています。だから私は、次のフィールドがあります。javaxバリデーションで国際化を使用する場合、フィールド名の挿入方法は?
@Size(min = 3, max = 3, message = "{javax.validation.constraints.Size.message}")
private String currencyCode;
米国のリソースバンドルがあります。このフィールドは、検証に失敗したとき
javax.validation.constraints.Size.message = size must be between {min} and {max}
だから、私はメッセージ
"size must be between 3 and 3"
を参照してください。メッセージ
"currencyCode's size must be between 3 and 3"
につながる
javax.validation.constraints.Size.message = {fieldName}'s size must be between {min} and {max}
:
しかし、私が望むのようなメッセージを持っていることです。
これは可能ですか? Beanをオーバーライドして動作させる必要がありますか?フィールド名にあらかじめ定義されたプロパティはありますか?あなたがそれらの内側MethodArgumentNotValidException
@ExceptionHandler(MethodArgumentNotValidException.class)
public Object handleMethodArgumentNotValidException(final MethodArgumentNotValidException e) { ...
のハンドラを作成することができます
あなたはStrSubstitutorを使用するとはどういう意味ですか? –
ありがとう、これは本質的に答えです。私はちょうど 'fieldError.getDefaultMessage()を使用します。replace(" {fieldName} "、fieldError.getField()); –
私はこれを意味します ' Map valuesMap = HashMap(); valuesMap.put( "animal"、 "quick brown fox"); valuesMap.put( "target"、 "lazy dog"); String templateString = "$ {animal}は$ {target}にジャンプします。「; StrSubstitutorサブ=新しいStrSubstitutor(valuesMap); 文字列resolvedString = sub.replace(templateString); ' と を引き起こす'速い茶色のキツネが怠惰なdog.' 飛び越えしかし、あなたのソリューションも良いです –