在控制器中,可以轻松地将数据从参数绑定到域对象。
例如,如果对象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;域对象
答案 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
是什么,这可能是相关的。