为Groovy类的属性添加约束(不是Grails域类!)

时间:2011-05-05 02:16:35

标签: groovy constraints maxlength


我们如何向Groovy类的属性添加一些常见约束(即maxLength,nullable)?我知道我们可以在Grails域类中完成它,但是如果它是一个Groovy类(我将它用作我的Grails项目的DTO类)它是否可能? 非常感谢你!

3 个答案:

答案 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可能不喜欢它;)