我们如何向Groovy类的属性添加一些常见约束(即maxLength,nullable)?我知道我们可以在Grails域类中完成它,但是如果它是一个Groovy类(我将它用作我的Grails项目的DTO类)它是否可能?
非常感谢你!
答案 0 :(得分: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']
命令类有Grails添加的validate()
方法。调用此方法后,errors
属性中将显示任何错误(根据域类)。
答案 1 :(得分:1)
使用grails Command Object可能是你最好的选择。它有约束和验证,但没有数据库支持。它通常是控制器使用的值对象,但您可以在控制器外部实例化一个没有任何问题。
答案 2 :(得分:0)
不确定这是否与您的使用相关(我不熟悉DTO),但在当前版本(2.3.8)中,您还可以将Grails约束添加到抽象类中,并且它们将由扩展它的域名。您的IDE可能不喜欢它;)