2011-07-15 12 views
0

i18nのプロパティ値をgrailsの他の国際化メッセージに含めることはできますか?grails i18nラベルは相互参照していますか?

"minDelay"と "maxDelay"という2つのプロパティを持つドメインクラスがあり、その両方を参照する国際化メッセージを書きたいと思います。

私は(MAXDELAYがより大きくまたはminDelayと等しくなければなりません)カスタムバリデータを書きました:

maxDelay(validator:{ 
    value, reference -> 
    if (value < reference.minDelay) { 
     return ['custom.error', it] 
    } else { 
     return true; 
    } 
    }) 

それが失敗したとき、私はプロパティstub.maxDelay.custom.errorを印刷しています。私messages.propertiesで

プロパティがあります

stub.maxDelay.custom.error=Property [{0}] must be bigger than value of minDelay 
stub.minDelay.label=Min. delay (ms) 
stub.maxDelay.label=Max. delay (ms) 

は、どのように私の代わりに、静的なテキストのstub.minDelay.labelプロパティの値を使用できますか? エラーメッセージは次のように読んでください:

"Property [Max. delay (ms)] must be bigger than value of [Min. delay (ms)]" 

私は{stub.minDelay.label}${stub.minDelay.label}のようにそれを参照しようとしましたが、私が得るすべては、Grailsのからパースエラーです。

おそらく私は間違った方法でこれに近づいています。バリデーターに数値パラメータでラベルを挿入することは可能でしょうか?例えばのようなエラーメッセージがあった場合:

stub.maxDelay.custom.error=Property [{0}] must be bigger than value of [{1}] 

答えて

0

注微調整あなたのエラーメッセージのために使用することができるクラスorg.springframework.validation.Errorsの三番目のパラメータは、、のように、また、そこにあること:それは

maxDelay(validator:{ value, reference, errors -> 
    if (value < reference.minDelay) { 
     errors.rejectValue('maxDelay', 'stub.maxDelay.custom.error', [value, obj.minDelay], 'oops') 
    } 
    }) 

stub.maxDelay.custom.error=Property [{0}] must be bigger than value of [{1}] 
+0

あなたの提案を試みましたが、ラベル名ではなくオブジェクトのプロパティの値がレンダリングされます。たとえば、 'Property [10]は[5000]の値より大きくなければなりません。 –

+0

ああ、それは 'Property [Max。 delay(ms)]の値が[Min。あなたはそれを書いていませんでしたか? –

+0

minDelayプロパティラベルを参照する他のメッセージから分離しようとしています。他の状況でも必要になりますi18nメッセージには他のメッセージが含まれている必要があります。 –

関連する問題