Grails:普通类和命令对象之间的区别?
Posted
技术标签:
【中文标题】Grails:普通类和命令对象之间的区别?【英文标题】:Grails: difference between a plain class and a command object? 【发布时间】:2015-05-10 18:43:08 【问题描述】:在 Grails 中,可以通过调用 ClassNameCommand 来定义一个 Command 对象类,并将其用作传递数据的容器。但这与/src/
中定义的普通类有什么区别?
这个问题源于Grails: Is it possible to prevent a domain class instance from being persisted?,当时有人建议创建一个 Command 对象,但看起来从 Domain 类继承的普通类也可以工作......
【问题讨论】:
【参考方案1】:命令对象没有命名约定,除非您使用的是我不知道的插件。
有两种方式可以将类视为命令对象;标准的方法是将类用作控制器操作方法中的方法参数。所有操作方法参数都受数据绑定的影响,对于简单类型(字符串、长整数等),这很简单。如果你使用一个类作为参数,它被认为是一个命令对象,并且 AST 转换将它扩展为具有grails.validation.Validateable
注释,并添加验证方法(例如validate
、getErrors
等)通常这些类是定义的在与它们使用的控制器相同的文件中,如果这是唯一使用它的类,这是有道理的。
或者,您可以使用 src/groovy
类作为命令对象 - 只需自己注释即可。如果该类被多个控制器使用,这是一种很好的方法。
这被描述为in the docs(忽略“一个类只被认为是一个命令对象......”注)。
【讨论】:
嗨,伯特。感谢您经常回答 Grails 问题。所以你是说附加到类名的“命令”实际上并不重要,就像“服务”或“控制器”一样? 是的 - 名称规则仅适用于(大多数)工件,但这些不是正式的工件。以上是关于Grails:普通类和命令对象之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章