我正在尝试使用Roo中最新的GWT集成开发Spring Roo/GWT应用程序.
让脚手架工作是非常简单的,但我真的不明白RPC如何在那里工作.
有人可以提供一个简单的例子,说明如何在Spring Roo和GWT中连接客户端/服务器.
一开始会非常有帮助,因为我找不到任何资源.
thx&respect,Flo
弗洛,
不确定你是否依赖谷歌浪潮,但这似乎是一个保持当前努力的地方.具体来说,这个浪潮可供公众使用: RequestFactory Wave
它涵盖了有关RequestFactory API的详细信息(很多新出现的细节).
基本思想是在服务器端和客户端需要您的域模型对象.使用Hibernate会引起问题与类文件和人民清盘有两套模型对象,并使用自定义GWT-RPC,使客户端和服务器端的模型对象之间的服务器请求和马歇尔/ UN-马歇尔.不是理想的解决方案.即使您可以使用相同的模型对象,RPC的开销也是一种阻力.
输入RequestFactory,我们看到谷歌工程师可能会获得他们的价值.看一下从.roo生成的示例代码 - 特别是ApplicationRequestFactory.java.
package com.springsource.extrack.gwt.request; import com.google.gwt.requestfactory.shared.RequestFactory; public interface ApplicationRequestFactory extends RequestFactory { ReportRequest reportRequest(); ExpenseRequest expenseRequest(); EmployeeRequest employeeRequest(); }
这是一个为每个域对象提供请求方法的接口.项目中没有定义此类的实现.它在EntryPoint中实例化,调用GWT.create(...):
final ApplicationRequestFactory requestFactory = GWT.create(ApplicationRequestFactory.class); requestFactory.init(eventBus);
在com.springsource.extrack.gwt.request
包中,您将看到一个ApplicationEntityTypesProcessor.java,它巧妙地使用泛型来打包对域类的引用,以便稍后在演示文稿中使用.该软件包的其余部分是每个模型对象的事件和处理程序.
具体来说,每个对象有四个自动生成的类:
EmployeeRecord.java - 这是域对象的DTO.
EmployeeRecordChanged.java - 这是一个RecordChanged事件,用于提供onEmployeeChanged的钩子方法.
EmployeeChangedHandler.java - 这是在需要onEmployeeChanged的特定行为时实现的接口.
EmployeeRequest.java - 这是ApplicationRequestFactory用于打包给定对象的各种访问方法的接口.
请记住,幕后生成了大量代码来支持所有这些.从M1到M2,很多东西都被清除了GWT项目中可见的东西.我希望会有更多的变化,但不像M1到M2那样剧烈.
因此,最终这些事件可以在UI包中使用,以将域和UI联系在一起.ReportListActivity.java:
public void start(Display display) { this.registration = eventBus.addHandler(ReportRecordChanged.TYPE, new ReportChangedHandler() { public void onReportChanged(ReportRecordChanged event) { update(event.getWriteOperation(), event.getRecord()); } }); super.start(display); }
我再次向您推荐wave以获取更多信息.另外,expenses.roo演示了如何使用Places并且还有一个相当灵活的Activity框架.快乐的GWTing.
问候.