validation - Grails验证程序未返回预期的消息

标签 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”,而不是标准版本。因此getCode并不是很有用。

如何生成代码列表,以及解决此问题的最佳方法是什么?我考虑过迭代所有代码,并使用messageSource查找它们,但这似乎非常疯狂和极端。让我感到困惑的是,我之前从未见过这个问题……让我觉得以某种方式,正在发生一些不同的事情,导致代码的奇怪顺序。还是我完全误解了它应该如何工作?

最佳答案

好吧...发现,除了迭代遍历allErrors并尝试以这种方式提取代码外,您还可以遍历fieldErrors并将整个fieldError传递到messageSource中,它将自行解决。

所以...

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

希望这对以后的人有所帮助。

关于validation - Grails验证程序未返回预期的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28948891/

相关文章:

javascript - Angular : ng-message validation on submit click

c - 如何确保输入是 C 编程语言中的 double

jquery - 使用 jQuery 切换到焦点带有验证错误的选项卡

java - 如果渲染保存json成功,如何刷新页面true

grails - 将 SQL 查询转换为 Grails

unit-testing - 在grails中进行单元测试时,如何模拟/ stub 特定的自定义验证器?

Grails 2.0 问题渲染 FancyBox

jquery - 验证来自 ajax 注入(inject)元素的数据。需要将新数据绑定(bind)到文档以便验证能够看到它。多维 Controller

javascript - JQuery $().each 退出太早

jquery - 如何将JSON渲染为jQuery