在服务类上使用数据绑定器,grails

时间:2014-12-22 15:38:58

标签: hibernate grails

在控制器中,可以轻松地将数据从参数绑定到域对象。

例如,如果对象A的B为B,那么在您的表单中,您可以像这样创建r / ship:

<input type="text" name="b.id" value ="1"/>

但是我想在服务中做一些事情,不幸的是绑定仅适用于控制器。

所以我找到了这个搜索:

手动导入

import org.codehaus.groovy.grails.web.binding.DataBindingUtils;

并绑定

DataBindingUtils.bindObjectToInstance(targetObject, sourceObject, null, null, null);

但这不起作用。

在目标对象上我有一个字段&#34; client.id&#34;,我的期望是一个新的客户端对象&#34; client.id&#34;将被创建并且r / ship将被设置(如在控制器中)但是得到这个错误:

Field error in object 'org.msad.agent' on field 'client': rejected value [null];

sourceobject =&gt; json地图对象

targetobject =&gt;域对象

1 个答案:

答案 0 :(得分:1)

您尚未提供足够的信息以确定无法解决的原因,但您无论如何都不应直接与DataBindingUtils进行互动。更好的想法是与数据绑定器bean进行交互。你可以这样做......

import org.grails.databinding.SimpleMapDataBindingSource

class DemoService {

    def grailsWebDataBinder

    def serviceMethodWhichDoesDataBinding(targetObject, Map props) {
        grailsWebDataBinder.bind targetObject, new SimpleMapDataBindingSource(props)

        // ...
    }
}

你还没有说出sourceObject是什么,这可能是相关的。