返回自定义验证器错误Grails

时间:2010-11-06 04:23:56

标签: 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
        })
}
}

/ 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

由于

3 个答案:

答案 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对象放入消息代码。