我正在使用Grails 2.4.4。在控制器中,我使用命令对象来处理视图中的输入。这很好。但现在我想为命令对象使用子类。根据{{1}}中的某些id,我想为命令对象创建一个特定的子类。接下来我想使用以下语法填充此命令对象:
params
后一个赋值失败并显示错误消息"无法设置readonly属性:class的属性:"。
我在文档中读到def finish() {
final commandObject = createSubclassInstance(params.task.id)
commandObject.properties = params
...
}
字段适用于域类。它对命令对象的子类不起作用吗?
答案 0 :(得分:1)
如果要将请求中的属性绑定到命令或任何其他对象,可以使用:
org.codehaus.groovy.grails.web.binding.DataBindingUtils.bindObjectToInstance(command, params)
这个和DataBindingUtils
类的其他静态方法是Grails用来绑定命令/域与所有Grails绑定功能(侦听器,绑定注释,如@BindUsing
,...)的真正底层方法。 。)并验证它,返回一个BindingResult对象。如果您处理properties
属性,那么您将失去Grails的许多强大的绑定功能。
PS:请注意这些方法,你可以从params
,一个Map,请求(如果请求带有一个带有JSON的POST)绑定。