2

私の message.properties には、デフォルトでこれが含まれています:

typeMismatch.java.lang.Double=プロパティ {0} は有効な数値でなければなりません

プレースホルダー {0} は属性名に置き換えられます。次のようにフロントエンドに使用されるラベルを使用したい:

typeMismatch.java.lang.Double=Property {ここに素晴らしいラベル} は有効な数値でなければなりません。

私の最初の試み:

typeMismatch.java.lang.Double=Property ${message(code:'0')} は有効な数値でなければなりません。

「0」メッセージがないため、機能していません。その時点でドキュメントは明確ではありません。誰もがこれについてのアイデアを持っていますか?

編集:

さて、私は次のようにすべての属性に対してエラーメッセージを書くことができます:

typeMismatch.Book.booknumber = プロパティ Booknumber は有効な数値でなければなりません。

しかし、これは多くの余分な作業のようです...

4

4 に答える 4

2

だから私は少し間違いを犯しました..今はとても簡単です...ここで答えます。多分誰かがこれに遭遇するでしょう:

私の間違いは:

typeMismatch.java.lang.Double=Property {0} must be a valid number

{0} は属性名に置き換えられました。

その背後にある理由は、Grails API rendererror が正しいクラス名とプロパティを探しているためです。

例えば:

私のクラスはBookという名前で、プロパティはnumberです。

私のメッセージのプロパティで:

book.number = Booknumber

i18n の場合、すべて正常に機能しましたが、エラー メッセージが表示されると、次のように表示されます。

"Property number must be a valid number."

メッセージ プロパティの正しいバージョン:

Book.number = Booknumber

今私のために働きます。:-)

于 2009-09-08T09:52:33.933 に答える
1

素晴らしい!投稿ありがとうございます!最初はうまくいかなかったのですが、プロパティ名の前に完全修飾クラス名を使用する必要があることに気付くまでに時間がかかりました。したがって、構文は次のとおりです。

package.ClassName.propertyName=Label

非常に便利!再度、感謝します!アル

于 2009-09-20T02:46:35.700 に答える
0

Spring のデータ バインディング エラー バリデーター ("{0}" は有効な数値である必要があります) が必要ですfullClassName.fieldName 短いクラス名および/または .label が認識されません。org.springframework.validation.DefaultBindingErrorProcessor#getArgumentsForBindError

Grailsバリデーター (「{0} は有効な電子メール アドレスでなければなりません」) が必要FQClassName.fieldName.labelまたはclassPropertyName.fieldName.label.labelorg.codehaus.groovy.grails.validation.AbstractConstraint#rejectValueWithDefaultMessage

したがって、両方の検証で同じ翻訳可能な人間にわかりやすい名前を取得するには、 と のFQN/shortClassName.attributeName.label 両方 が必要です。FQN.attributeName

http://jira.grails.org/browse/GRAILS-8369

于 2011-11-24T18:36:44.013 に答える