在返回消息条目字符串和args之前,我可以获取Grails消息字符串吗



显然简化了,但我正在尝试构建一个字符串,并将其传递到另一个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()的调用不起作用,而且我似乎也无法使用任何其他方法来获取它。

我也有类似的情况,我使用以下代码。

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)
}

我通过做以下事情实现了我的期望:

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

最新更新