我有一个域对象,在两个字段上有大小验证。该对象基本上类似于:
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来查找它们,但这看起来非常疯狂和极端。令我感到困惑的是,我之前从未见过这个问题......让我觉得不知怎的,发生了不同的事情导致代码的奇怪顺序。或者我完全误解了 应该如何工作?
答案 0 :(得分:1)
好吧......发现不是迭代遍历allErrors并尝试以这种方式提取代码,而是可以迭代fieldErrors并将整个fieldError传递给messageSource,它将自行解析。
因此...
domainObject.errors.fieldErrors.each {
someList << messageSource.getMessage(it, locale)
}
希望将来可以帮助其他人。