我只收到默认验证器消息。我做错了什么?
class Questao {
static hasMany = [alternativas:Alternativa]
static constraints = {
alternativas (validator: {val, obj ->
if(val.size() < 2)
return ['validator.message'] //custom message
})
}
}
/ I18N
questao.alternativas.validator.message = "must be greater than two"
default.invalid.validator.message= Property [{0}] of class [{1}] with value [{2}] does not pass custom validation
由于
答案 0 :(得分:7)
您将返回包含消息代码的列表 - 您只需返回代码:
alternativas validator: { val, obj ->
if (val.size() < 2) {
return 'validator.message' //custom message
}
}
答案 1 :(得分:3)
此API已更改。返回带有自定义错误消息的字符串将不再有效。不幸的是,这没有详细记录。
根据 Groovy Truth ,返回字符串或非空列表将评估为true
。这意味着,验证器信号,“接受”。 - return false
,或者,如果您需要自定义错误消息,请明确rejectValue(..)
值:
alternativas (validator: {val, obj ->
if(val.size() < 2)
obj.errors.rejectValue('alternatives',
'questao.alternativas.validator.message')
})
答案 2 :(得分:0)
此外:
在Grails 2.5.2中(我只测试了这个版本)如果你在自定义验证器闭包中使用errors参数并返回一个消息代码(或带有消息代码的数组)它不起作用,你需要使用直接将errors对象放入消息代码。