如何使用 Ext GWT (GXT) 共享 Grails 上的域对象?
我的应用程序在逻辑上分为服务器,其中包含我的 Grails 域对象和控制器; 和客户端,我有 Ext GWT 类来构建所有 UI 页面。
对于 UI 请求,我使用对控制器方法的 AJAX 调用,该方法返回例如 JSON 结构形式的域对象列表。
遵循 DRY 原则,我不想将域数据“序列化”为服务器上的 JSON 字符串,然后在客户端上将其反序列化为另一个结构 - 我想利用我已有的 Domain 对象,当我添加、更改或删除新字段时,我不必更改多个位置。
问题是:这是一个好方法吗?
如果是,那么使 .groovy 域对象在“客户端”Ext GWT Java 类上可用的最佳方法是什么?
如果不是,为什么不好?您有什么建议?
My application is logically divided into server, which contain my Grails domain objects and controllers; and client, where I have my Ext GWT classes that build all the UI pages.
For UI requests, I am using an AJAX call to a controller method that returns, for instance, a list of domain objects as a JSON structure.
Following the DRY principle, I wouldn't like to "serialize" the domain data to a JSON string on the server then de-serialize it on the client to another structure - I'd like to take advantage of the Domain object I already have, this I don't have to change multiple places when I add, change or remove a new field.
Question is: is that a good way to go?
If yes, how would be the best way to make .groovy domain objects available on the "client-side" Ext GWT Java classes?
If no, why is it bad and what would you advice instead?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没有一个好的方法 - 您需要一个可 GWT 可序列化的 java 对象。 我能看到的唯一真正的解决方案是编写一个插件(或添加到 GWT 插件)一种自动生成数据传输对象的方法,也许在 grails 域对象中使用注释。
类似的方法用于在 gwt 插件中自动生成 RPCAsync 接口 - 请参阅 gwt 插件目录中的 GwtGrailsPlugin.groovy,第 133 行左右是开始。
您可以连接到该文件(或者直接修改该文件,可能更容易)并插入一些代码来生成数据传输文件。 另一个好处是您可以细化数据传输对象,以便私人数据(如密码!)不会被传输。
There isnt a good way - you need a java object that is GWT serializable. The only real solution that I can see is to write a plugin (or add to the GWT plugin) a way to autogenerate the data transfer object, perhaps using annotations in a grails domain object.
A similar method is being used to autogenerate the RPCAsync interfaces in the gwt plugin - see GwtGrailsPlugin.groovy in the gwt plugin directory, line 133 or so is the start.
You could hook into that (or just modify that file directly, probably easier) and insert some code to generate the data transfer files. An added benefit could be that you could granularize the data transfer object so that private data (like passwords!) dont get transferred.
或者,您可以将数据以 json 或 xml 形式发送到客户端。 您可以为服务器端创建一个 REST api。
Alternatively, you can send your data to the clientside as either json or xml. you can create a REST api for your serverside.