显然已经简化了,但是我正在尝试构建一个字符串,我会将其传递给另一个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()
的调用不起作用,我似乎无法使用任何其他内容来获取它。
答案 0 :(得分: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)
}
答案 1 :(得分: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