我正在尝试制作一个标记库来表示一个对象(以在用户界面上读取和显示)。创建对象时(在控制器中保存方法),我看到域类和关联是通过参数自动分配创建的
def Book = new Book(params)
它还映射复杂类型(例如:joda time)。我想知道促进这种映射所需的命名约定。出于好奇,有人还可以指出在 grails 源代码中我可以看到 grails 如何处理此映射吗?我仍在学习 Spring,这可能是一个很好的练习。 谢谢, 巴布.
据我所知,命名约定相当简单。如果有一个字段
params.foo
并且您要绑定的对象有一个字段 foo,它将绑定该值,假设类型转换正常工作。如果有一个 params.bar.id
设置了 Long 值,并且您的对象具有 Bar
类型的复杂属性,它将查找此实例并注入它。
如果您需要对绑定过程进行更多控制,您可能需要使用bindData。
如果您对绑定过程的细节感兴趣,请查看 Java 的 PropertyEditor,因为这是在后台使用的。我不久前写了一篇关于如何创建和注册 PropertyEditor 的博客文章,也许它可以帮助您开始使用这些东西。