我们如何向 Groovy 类的属性添加一些常见的约束(即 maxLength、可为空)?我知道我们可以在 Grails 域类中做到这一点,但是如果这是一个 Groovy 类(我将它用作我的 Grails 项目的 DTO 类),是否有可能?
太感谢了!
问问题
3063 次
3 回答
6
您可以将约束添加到命令类。如果命令类与控制器在同一个 .groovy 文件中(在 Groovy 中,每个 .groovy 文件中可以有多个公共类),则无需为 Grails 执行任何特殊操作即可将其识别为命令类.
但是,如果您的命令类在其他地方(例如在 src/groovy 下),您需要使用注释@Validateable
并将包名称添加grails.validateable.packages
到Config.groovy
. 这是与控制器不在同一文件中的命令示例
pacakge com.example.command
@Validateable
class Person {
Integer age
String name
static constraints = {
name(blank: false)
age(size 0..100)
}
}
将以下内容添加到Config.groovy
grails.validateable.packages = ['com.example.command']
命令类有一个validate()
由 Grails 添加的方法。调用此方法后,errors
属性中将显示任何错误(根据域类)。
于 2011-05-05T08:37:13.940 回答
1
使用 grails命令对象可能是您最好的选择。它有约束和验证,但没有数据库支持。它通常是控制器使用的值对象,但您可以在控制器外部实例化一个值对象而不会出现任何问题。
于 2011-05-05T03:00:58.913 回答
0
不确定这是否与您的使用有关(我不熟悉 DTO),但在当前版本(2.3.8)中,您还可以将 Grails 约束添加到抽象类,它们将被扩展的域继承它。您的 IDE 可能不喜欢它;)
于 2014-05-16T21:49:21.853 回答