为什么 default/suggested 在 Grails CRUD 中练习,所以在 Create 上用 prams 初始化

Why default/suggested practice in Grails CRUD so initialize with prams on Create

在 Grails 中创建一个新的控制器,默认生成如下创建方法:

def create() {
    respond new Book(params), model: [......]
}

我想知道背后的原因是什么,为什么不简单地使用 new Book() 或什么都不做?

此外,对命令对象使用相同的方法会出错,例如:

No such property: action for class: com.BookCommand

我知道参数包含操作 属性,命令对象不包含,但域 class.

也不包含

感谢您花时间解释。

控制器中使用的数据绑定器对 class 中不存在的属性略有放松,主要是因为 "extra" 参数,例如操作和控制器名称。仅设置持久性和可绑定属性(并且始终忽略 idversionclassmetaClass

Book 是从 params 创建而不仅仅是一个新的默认实例的原因是允许设置一些初始默认值,例如

/book/create?foo=42&bar=purple

这将在 GSP 表单中设置 foo 和 `bar' 属性的初始值。