如何使用Ext GWT(GXT)在Grails上共享Domain对象?
题
我的应用程序在逻辑上划分为服务器,其中包含我的Grails域对象和控制器;和客户端,我有我的Ext GWT类,构建所有的UI页面。
对于UI请求,我使用对控制器方法的AJAX调用,例如,将域对象列表作为JSON结构返回。
遵循DRY原则,我不想“序列化”将域数据转换为服务器上的JSON字符串然后在客户端上将其反序列化为另一个结构 - 我想利用我已经拥有的Domain对象,这样我在添加时不必更改多个位置,更改或删除新字段。
问题是:这是一个好方法吗?
如果是,那么在“客户端”上提供.groovy域对象的最佳方法是什么? Ext GWT Java类?
如果不是,那为什么不好呢?你会建议什么呢?
解决方案
有一个好方法 - 你需要一个GWT可序列化的java对象。我能看到的唯一真正的解决方案是编写一个插件(或添加到GWT插件),一种自动生成数据传输对象的方法,可能使用grails域对象中的注释。
使用类似的方法自动生成gwt插件中的RPCAsync接口 - 请参阅gwt插件目录中的GwtGrailsPlugin.groovy,第133行左右是开始。
你可以挂钩(或者直接修改那个文件,可能更容易)并插入一些代码来生成数据传输文件。一个额外的好处可能是您可以对数据传输对象进行粒化,以便私有数据(如密码!)不会被传输。
其他提示
或者,您可以将数据作为json或xml发送到客户端。您可以为服务器端创建REST API。
不隶属于 StackOverflow