2

我知道 Grails 有一个基于映射的域对象构造函数,您可以将 URL 的参数传递给该构造函数,它会使用自省将适当的字段设置应用于对象,就像这样......

myDomainInstance = new MyObject(params)

我想知道是否有一种等效的方法来获取参数并将它们应用于现有对象并以与地图构造函数必须工作的方式相同的方式更新值,例如......

myDomainInstance = params

或者

myDomainInstance = fromParams(params)

我只是一厢情愿还是存在这样的事情?我可以自己编写代码,但如果它已经存在,我宁愿不要。

谢谢

4

2 回答 2

7

改编自grails 用户指南

obj = MyObject.get(1)
obj.properties = params

查看控制器部分下的“参数”文档以获取更多信息。

于 2010-01-20T16:52:01.410 回答
2

这实际上取决于您要做什么,但等效的方法使用数据绑定。

def sc = new SaveCommand()
bindData(sc, params)

这为您提供了使用自定义绑定的好处。如果假设您的日期格式不是默认格式,您可以通过这样的 bean 重新定义它:

public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {
  public void registerCustomEditors(PropertyEditorRegistry registry) {
      registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true));
  }
}
于 2010-01-21T08:06:49.093 回答