3

我的应用程序在逻辑上分为服务器,其中包含我的 Grails 域对象和控制器;和客户端,在那里我有构建所有 UI 页面的 Ext GWT 类。

对于 UI 请求,我使用 AJAX 调用来返回例如作为 JSON 结构的域对象列表的控制器方法。

遵循 DRY 原则,我不想在服务器上将域数据“序列化”为 JSON 字符串,然后在客户端将其反序列化为另一个结构 - 我想利用我已经拥有的域对象, 这在我添加、更改或删除新字段时不必更改多个位置。

问题是:这是一个好方法吗?

如果是,如何使 .groovy 域对象在“客户端”Ext GWT Java 类上可用的最佳方式是什么?

如果没有,为什么它不好,你会建议什么?

4

2 回答 2

1

没有一个好方法——你需要一个 GWT 可序列化的 java 对象。我能看到的唯一真正的解决方案是编写一个插件(或添加到 GWT 插件)一种自动生成数据传输对象的方法,可能使用 grails 域对象中的注释。

类似的方法被用于在 gwt 插件中自动生成 RPCAsync 接口 - 请参阅 gwt 插件目录中的 GwtGrailsPlugin.groovy,第 133 行左右是开始。

您可以挂钩(或者直接修改该文件,可能更容易)并插入一些代码来生成数据传输文件。另一个好处可能是您可以细化数据传输对象,以便私有数据(如密码!)不会被传输。

于 2008-10-29T09:52:34.450 回答
0

或者,您可以将数据作为 json 或 xml 发送到客户端。您可以为您的服务器端创建一个 REST api。

于 2009-12-02T18:33:23.590 回答