无法使用属性初始化命令对象的子类?

时间:2015-06-03 09:23:57

标签: grails

我正在使用Grails 2.4.4。在控制器中,我使用命令对象来处理视图中的输入。这很好。但现在我想为命令对象使用子类。根据{{​​1}}中的某些id,我想为命令对象创建一个特定的子类。接下来我想使用以下语法填充此命令对象:

params

后一个赋值失败并显示错误消息"无法设置readonly属性:class的属性:"。

我在文档中读到def finish() { final commandObject = createSubclassInstance(params.task.id) commandObject.properties = params ... } 字段适用于域类。它对命令对象的子类不起作用吗?

1 个答案:

答案 0 :(得分:1)

如果要将请求中的属性绑定到命令或任何其他对象,可以使用:

org.codehaus.groovy.grails.web.binding.DataBindingUtils.bindObjectToInstance(command, params)

这个和DataBindingUtils类的其他静态方法是Grails用来绑定命令/域与所有Grails绑定功能(侦听器,绑定注释,如@BindUsing,...)的真正底层方法。 。)并验证它,返回一个BindingResult对象。如果您处理properties属性,那么您将失去Grails的许多强​​大的绑定功能。

PS:请注意这些方法,你可以从params,一个Map,请求(如果请求带有一个带有JSON的POST)绑定。