在Grails中,可以通过调用 ClassName Command来定义Command对象类,并将其用作传递数据的容器。但是它与/src/
中定义的普通类之间有什么区别?
当有人建议创建一个Command对象时,这个问题源于Grails: Is it possible to prevent a domain class instance from being persisted?,但是看起来继承自Domain类的普通类也可以正常工作......
答案 0 :(得分:2)
命令对象没有命名约定,除非您使用的是我不知道的插件。
将类视为命令对象有两种方法;标准的一个是将类用作控制器动作方法中的方法参数。所有操作方法参数都受数据绑定的约束,对于简单类型(String,Long等),这很简单。如果使用类作为参数,则将其视为命令对象,AST转换将其扩展为具有grails.validation.Validateable
注释,并添加验证方法(例如validate
,{{1}通常这些类在与它们使用的控制器相同的文件中定义,如果它是唯一使用它的类,这是有道理的。
或者,您可以使用getErrors
类作为命令对象 - 只需自己注释即可。如果该类由多个控制器使用,这是一种很好的方法。
这被描述为in the docs(只是忽略"一个类只被认为是一个命令对象..."注意)。