Har*_*cle 5 data-binding grails groovy hibernate custom-type
我正在使用Grails的自定义hibernate类型(http://grails.org/doc/2.3.x/guide/GORM.html#customHibernateTypes),我将类型映射到多个列.但是,我有点不知道如何对这些自定义类型进行数据绑定.我可以使用@BindUsing注释,但是,我只有一个属性和多个列.
例如,这是一个groovy类(它将具有使用正确定义的CustomDataUserType类创建的自定义类型):
class CustomData
{
String field1
String field2
}
Run Code Online (Sandbox Code Playgroud)
这是一个将此类作为属性的域模型
class DomainModel
{
static mapping = {
customData type: CustomDataUserType, {
column name: "field1"
column name: "field2"
}
@BindUsing { obj, source ->
// The source contains a field/property called customData (otherwise
// this BindUsing closure doesn't get called) however, I need two
// values
}
CustomData customData
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在BindUsing闭包内部,源包含一个值,一个名为customData的属性.但是,我需要两个值来重新创建自定义对象.这个问题通常如何解决?
BindUsing 闭包传递当前对象和一个映射,该映射是代码示例中的 Source。如果您在地图中传递了 field1 和 field2,您可以轻松地将它们放入您的 CustomData 类型中。
例如,将此 JSON 发布到期望的控制器DomainModel
{
field1: 'test',
field2: '1'
}
Run Code Online (Sandbox Code Playgroud)
使用以下 @BindUsing 中的DomainModel
@BindUsing { obj, source ->
CustomData customData = new CustomData(field1: source['field1'],field2: source['field2'])
return customData
}
CustomData customData
Run Code Online (Sandbox Code Playgroud)
这应该通过数据绑定正确创建您的自定义对象。
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |