我正在尝试制作一个taglib来表示一个对象(在UI上读取和显示)。在创建对象(在控制器中保存方法)时,我看到域类和关联是由参数的自动赋值创建的
def Book = new Book(params)
它还映射复杂类型(例如:joda时间)。我想知道促进这种映射所需的命名约定。出于好奇,有人也可以指出grails源代码中我可以看到grails如何处理这个映射。我还在学春天,这可能是一个很好的练习。 谢谢, 巴布。
答案 0 :(得分:2)
AFAIK的命名约定相当简单。如果有一个字段params.foo
并且您绑定的对象有一个字段foo,它将绑定该值,假设类型转换正常工作。如果params.bar.id
设置为Long值,并且您的对象具有类型为Bar
的复杂属性,则它将查找此实例并将其注入。
如果您需要更多控制绑定过程,可能需要使用bindData。
如果您对绑定过程的细节感兴趣,请查看Java的PropertyEditor,因为这是后台使用的内容。我写了一篇关于如何创建和注册PropertyEditors的blog post,也许它可以帮助你开始使用这些东西。