我们如何向Groovy类的属性添加一些常见约束(即maxLength,nullable)?我知道我们可以在Grails领域类中实现,但如果这是Groovy类(我将它用作我的Grails项目的DTO类),它有可能吗?
非常感谢!为Groovy类的属性添加约束(不是Grails域类!)
回答
您可以为命令类添加约束。如果一个命令类与一个控制器在同一个.groovy文件中(在Groovy中,每个.groovy文件中都可以有多个公共类),您不需要为Grails做任何特殊的事情就可以将其命名为命令类。但是,如果您的命令类在其他位置(例如,在src/groovy下),则需要使用@Validateable
对其进行注释,并将软件包名称添加到Config.groovy
中的参数grails.validateable.packages
。下面是不是在同一个文件作为控制器
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']
Command类已通过的Grails添加了validate()
方法。在调用此方法后,任何错误将在errors
属性中提供(按照域类)。
对于单元测试,你然后可以使用@TestMixin(ControllerUnitTestMixin)和mockForConstraintsTests。这与用于域对象的典型@TestFor注释不同。 – 2012-05-26 15:25:59
使用grails Command Object可能是您最好的选择。它有约束和验证,但没有数据库支持。它通常是控制器使用的值对象,但是您可以在控制器之外实例化一个控制器,而不会出现任何问题。
不确定这是否与您的使用相关(我对DTO不熟悉),但在当前版本(2.3.8)中,您还可以将Grails约束添加到抽象类,并且它们将被扩展它的领域。你的IDE可能不喜欢它)
- 1. Grails/Groovy域类的继承性演变
- 2. NHibernate标准:为属性类型添加一个约束条件
- 3. 从基类继承Grails域类属性
- 4. Grails域类的属性拦截
- 5. Grails和Groovy元类包名称约定
- 6. Grails - 不能添加一个自定义验证器的域类中的属性
- 7. Grails领域约束定义
- 8. Grails的 - 在子类的唯一约束
- 9. Grails域对象包括类属性
- 10. Grails,从gsp更改域类属性
- 11. 如何在Grails中的域类中建立关系约束?
- 12. Grails - 如何让域类将JSON转换为域属性
- 13. 约束属性给定类型的属性
- 14. Grails域类可以从不是域类的类继承吗?
- 15. 哪些小部件约束对Grails域类有效?
- 16. 如何获取Grails域对象的属性的类型(类)?
- 17. Symfony的 - 在一个领域约束类
- 18. 添加类装饰器的类属性
- 19. 属性与约束
- 20. Grails的validateable不是非持久域类
- 21. 的Grails:服务VS Groovy类
- 22. Grails领域约束映射到PostgreSQL吉斯特约束
- 23. 添加类属性在Python
- 24. 通用类约束其中<T>是约束通用类的类型
- 25. 类约束
- 26. 约束不能是特殊类'System.Object'
- 27. 类型参数约束是一个类
- 28. 的Grails GORM约束
- 29. 为什么类型约束不够?
- 30. 添加CHECK约束在SQL Server:添加约束VS添加复
类似的问题:http://stackoverflow.com/questions/4448556/grails-validateable-not-work-for-non-persistent-domain-class – 2011-05-24 08:03:28