【问题标题】:Grails: difference between a plain class and a command object?Grails:普通类和命令对象之间的区别?
【发布时间】: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 类继承的普通类也可以工作......

【问题讨论】:

    标签: grails


    【解决方案1】:

    命令对象没有命名约定,除非您使用的是我不知道的插件。

    有两种方式可以将类视为命令对象;标准的方法是将类用作控制器操作方法中的方法参数。所有操作方法参数都受数据绑定的影响,对于简单类型(字符串、长整数等),这很简单。如果你使用一个类作为参数,它被认为是一个命令对象,并且 AST 转换将它扩展为具有grails.validation.Validateable 注释,并添加验证方法(例如validategetErrors 等)通常这些类是定义的在与它们使用的控制器相同的文件中,如果这是唯一使用它的类,这是有道理的。

    或者,您可以使用 src/groovy 类作为命令对象 - 只需自己注释即可。如果该类被多个控制器使用,这是一种很好的方法。

    这被描述为in the docs(忽略“一个类只被认为是一个命令对象......”注)。

    【讨论】:

    • 嗨,伯特。感谢您经常回答 Grails 问题。所以你是说附加到类名的“命令”实际上并不重要,就像“服务”或“控制器”一样?
    • 是的 - 名称规则仅适用于(大多数)工件,但这些不是正式的工件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2014-09-06
    • 2019-02-26
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多