我的应用程序在逻辑上划分为服务器,其中包含我的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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top