2

明らかに単純化されていますが、別の messages.properties エントリに渡す文字列を作成しようとしています。たとえば、次のようなエントリがあったとします。

someField.sillyError.good=good
someField.sillyError.bad=bad
someField.validation.error=This has been a [{3}] morning

次のような検証を使用します。

static constraints = {
    someField(nullable: false, blank: false, validator: { val, obj ->
        def someOtherEntry = g.message(code: 'someField.sillyError.' + val)
        return ['someField.validation.error', someOtherEntry]
    }
 }

への呼び出しはg.message()機能せず、それを取得するために他に何も使用できないようです。

4

2 に答える 2

1

同様の状況があり、次のコードを使用します。

default.mandatory.message={0} is Mandatory
item.error.message=Item #{0} - {1}



public setItemFieldMandatoryError(FormXItem item, String field, String defaultMessage) {
    def messageSource = Holders.applicationContext.messageSource
    def errorMessage = messageSource.getMessage("default.mandatory.message", [field] as Object[], LocaleContextHolder.getLocale())
    item.errors.rejectValue(field, "formXItem.error.message", [formxItem.itemNumber, errorMessage] as Object[], defaultMessage)
}
于 2012-07-26T05:07:51.207 に答える
0

次のことを行うことで、私が望んでいたことを達成することができました。

messages.properties

someField.sillyError.good=good
someField.sillyError.bad=bad
someField.validation.error=This has been a [{3}] morning

someCommand

def messageSource
static constraints = {
    someField(nullable: false, blank: false, validator: { val, obj ->
        def someOtherEntry = obj.messageSource.getMessage('someField.sillyError' + val, null, Locale.ENGLISH)
        return ['someField.validation.error', someOtherEntry]
    }
 }

コマンド オブジェクト レベルで Bean を注入し、制約内の obj 変数から呼び出すことができます。同僚から来たので、信用できません:P

于 2012-07-27T22:04:44.797 に答える