返回自定义验证程序错误Grails
我只收到默认的验证器消息。我做错了什么返回自定义验证程序错误Grails,grails,internationalization,validation,constraints,Grails,Internationalization,Validation,Constraints,我只收到默认的验证器消息。我做错了什么 class Questao { static hasMany = [alternativas:Alternativa] static constraints = { alternativas (validator: {val, obj -> if(val.size() < 2) return ['validator.message'] //custom message })
class Questao {
static hasMany = [alternativas:Alternativa]
static constraints = {
alternativas (validator: {val, obj ->
if(val.size() < 2)
return ['validator.message'] //custom message
})
}
}
谢谢您正在返回包含邮件代码的列表-您只需返回代码:
alternativas validator: { val, obj ->
if (val.size() < 2) {
return 'validator.message' //custom message
}
}
alternativas验证程序:{val,obj->
如果(值大小()<2){
返回“validator.message”//自定义消息
}
}
此API已更改。返回带有自定义错误消息的字符串将不再有效。不幸的是,这没有很好的记录
返回字符串或非空列表将根据Groovy真理计算为true
。也就是说,验证器发出“已接受”的信号-返回false
,或者,如果需要自定义错误消息,则显式地拒绝值(..)
值:
alternativas (validator: {val, obj ->
if(val.size() < 2)
obj.errors.rejectValue('alternatives',
'questao.alternativas.validator.message')
})
alternativas(验证器:{val,obj->
如果(值大小()<2)
obj.errors.rejectValue('Alternations',
'questao.alternativas.validator.message')
})
此外:
在Grails 2.5.2(我只在这个版本中测试过)中,如果您在自定义验证器闭包中使用errors参数并返回消息代码(或带有消息代码的数组),那么它不起作用,您需要直接使用errors对象来放置消息代码。由于它不是真的,所以没有文档记录。对不起,我弄错了。-但是,无论是在Grails用户指南中还是在Wiki中(在后者中,至少不在显著位置),都没有记录从验证程序返回字符串的过程因此,当关于这个问题的简单测试用例失败时,很可能会得出错误的结论。。。一个字符串,用于指示要附加到“classname.propertName.”的错误代码。…最困难的部分是理解返回的字符串如何映射到
messages.properties中的键;不过,一旦你掌握了窍门,就不会太棘手了。关于在docotherProperty验证器中返回列表的部分呢:{return['custom.error',arg1,arg2]}
没有很好的文档化没有很好的文档化是一种委婉说法。太糟了!
alternativas (validator: {val, obj ->
if(val.size() < 2)
obj.errors.rejectValue('alternatives',
'questao.alternativas.validator.message')
})