smartgwt + gwt-rpc 或 REST + spring

Posted

技术标签:

【中文标题】smartgwt + gwt-rpc 或 REST + spring【英文标题】:smartgwt + gwt-rpc or REST + spring 【发布时间】:2011-04-29 04:09:00 【问题描述】:

嗨 我目前正在从事一个项目,并将我的设计提案基于 SOA 架构,并且包括用于 UI 的 GWT 组件。我是 GWT 的新手,在阅读了一周的 GWT 和 SmartGWT 帖子并尝试了一些示例后,我想将 SmartGWT 引入我的组织中,而无需服务器端集成。那是因为我们已经有了 Spring 服务,并希望它们在整个组织中保持可重用性。所以我的主要兴趣在于 Smart GWT 的 ui 组件,并以某种方式(gwt-rpc 或 REST)连接到后端公开的服务。 我正在 SmartGWT 2.4 和 gwt2.2+ 上进行开发。我浏览了 GWT-rpc 上的帖子并尝试使用提供的示例 api。但是我遇到了几个问题。 尽管应用程序运行,但“按原样”运行 ListGridSample 我得到以下错误。 我正在使用来自here的样本

23:31:37.101 [错误] [listgridtest] 23:31:37.088:RDQ5:WARN:ResultSet:isc_ResultSet_0(创建者:isc_OID_1):get:无效索引-1 com.smartgwt.client.core.JsObject$SGWT_WARN: 23:31:37.088:RDQ5:WARN:ResultSet:isc_ResultSet_0(创建者:isc_OID_1):get:sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)处的无效索引-1 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 在 com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 在 com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 在 java.lang.Thread.run(Thread.java:619)

接下来我想删除示例项目中存在的所有冗余 jar,并更新 smartgwt jar 和 gwt-servlet jar,看看它是否仍然兼容。我收到了这个

23:37:06.584 [错误] [listgridtest] 无法加载模块入口点类 mytest.client.YourEntryPoint(有关详细信息,请参阅相关异常) com.google.gwt.core.client.javascriptException: (TypeError): Object [object Object] has no method 'getNextGlobalIDForClass' 堆栈:TypeError:对象 [对象对象] 没有方法“getNextGlobalIDForClass” 来源不明 在 __gwt_jsInvoke (ttp://127.0.0.1:8888/listgridtest/hosted.html?listgridtest:76:35) 在 ttp://127.0.0.1:8888/listgridtest/hosted.html?listgridtest:280:16 在 z (ttp://127.0.0.1:8888/listgridtest/listgridtest.nocache.js:2:144) 在 ttp://127.0.0.1:8888/listgridtest/listgridtest.nocache.js:8:589 参数:getNextGlobalIDForClass,[object Object] 类型:未定义方法 __gwt_ObjectId: 2 在 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:237) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:129) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 在 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 在 com.smartgwt.client.util.SC.generateID(SC.java) 在 com.smartgwt.client.widgets.BaseWidget.(BaseWidget.java:102) 在 com.smartgwt.client.widgets.Canvas.(Canvas.java:75) 在 mytest.client.YourEntryPoint.onModuleLoad(YourEntryPoint.java:24) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396) 在 com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:183) 在 com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510) 在 com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 在 java.lang.Thread.run(Thread.java:619)

我在 smartclient 论坛的某个地方读到不要混合 smartgwtee 和 smartgwt jar,所以我仔细检查了(因为我正在评估 ee 版本 b4this,但这需要学习数据源概念)。所以我正在使用 gwt2.2+ 和 smart-gwt2.4。

我已(快速)通读了快速入门 pdf,并决定虽然服务器端集成可能有利于在我的组织内快速介绍,但它不会起作用。 因此,从系统的角度来看,如果我理解正确,您可以为您的特定小部件定义数据源,然后在发回 DSresponse 之前或之后使用 GenericGwtService 传递给您的业务服务。 您能否指点我一个在最新版本中实际执行此操作的快速示例或一个确切说明如何执行此操作的文档?或者一个 api 或一个论坛帖子,它针对最新版本解决了这个问题。 希望这能帮助我完善示例 miniapp .. 这将帮助我 POC。 任何输入表示赞赏。 谢谢,

【问题讨论】:

【参考方案1】:

在这里回答了类似的问题 - Smartgwt DataSource with gwt requestfactory etc

您还可以查看 JSON 数据源 http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/data/XJSONDataSource.html

【讨论】:

对于休息和弹簧控制器,这是如何做到的Smartgwt with RestDataSource and SpringController

以上是关于smartgwt + gwt-rpc 或 REST + spring的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Swagger UI 添加到现有的 GXT 或 GWT 项目并使用当前的 GWT-RPC REST 请求?

如何使用SmartGWT手动/编程打开ComboboxItem / SelectedItem的pickList?

考虑下面列出的几个因素时,哪个更好 gwt-rpc 或 json

缓存 SmartGWT 应用程序的静态内容

SmartGWT 库的 UnsatisfiedLinkError

GWT-RPC 序列化的 ImmutableCollection 声明