Grails验证器未返回预期的消息

时间:2015-03-09 18:09:11

标签: validation grails

我有一个域对象,在两个字段上有大小验证。该对象基本上类似于:

class foo {
    String name
    String description

    static constraints = {
        name nullable: false, blank: false, size: 3..31, validator { val, obj ->
            // additional data validation returning a code if it fails
        }
        description nullable: true, size: 3..255
    }
}

问题是我希望"默认"错误的形式是class.field.error(例如com.Foo.description.size.toosmall),但实际上,当域类生成代码列表时,最终的代码是" size.toosmall& #34;,而不是完全限定版本。所以getCode不是很有用。

如何生成代码列表以及解决此问题的最佳方法是什么?我想迭代所有代码并使用messageSource来查找它们,但这看起来非常疯狂和极端。令我感到困惑的是,我之前从未见过这个问题......让我觉得不知怎的,发生了不同的事情导致代码的奇怪顺序。或者我完全误解了 应该如何工作?

1 个答案:

答案 0 :(得分:1)

好吧......发现不是迭代遍历allErrors并尝试以这种方式提取代码,而是可以迭代fieldErrors并将整个fieldError传递给messageSource,它将自行解析。

因此...

domainObject.errors.fieldErrors.each {
    someList << messageSource.getMessage(it, locale)
}

希望将来可以帮助其他人。