在Grails中创建一个新控制器,默认情况下会生成如下所示的create方法:
def create() {
respond new Book(params), model: [......]
}
我想知道它背后的原因是什么,为什么不是简单的新书()或什么都没有?
此外,对命令对象使用相同的方法会产生错误,例如:
No such property: action for class: com.BookCommand
我知道params包含action属性而Command对象没有,但域Domain类也没有。
感谢您花时间解释。
答案 0 :(得分:1)
控制器中使用的数据绑定器对于在课堂上不存在的属性略微放松,主要是因为"额外的"操作和控制器名称等参数。仅设置了持久性和可绑定属性(并且始终忽略id
,version
,class
和metaClass
。
从Book
创建params
而不仅仅是新的默认实例的原因是允许设置一些初始默认值,例如
/book/create?foo=42&bar=purple
将设置foo
和`bar'的初始值。 GSP表格中的属性。