gwt - 如何将 Spring Roo 和 GET 结合在一起

标签 gwt gwt-rpc spring-roo

我正在尝试使用 Roo 中 GWT 的最新集成开发 Spring Roo/GWT 应用程序。

让脚手架工作非常简单,但我不太明白 RPC 在那里是如何工作的。

你们中的任何人能否提供一个简单的示例,说明如何在 Spring Roo 和 GWT 中执行连接客户端/服务器的简单服务。

这对开始非常有帮助,因为我找不到任何相关资源。

谢谢和问候, 弗洛

最佳答案

弗洛,

不确定您是否在使用 google wave,但这似乎是跟上当前努力步伐的一个地方。具体来说,这一波对公众开放: RequestFactory Wave

它涵盖了有关 RequestFactory API 的详细信息(新兴的详细信息)。

基本思想是您的域模型对象在服务器端和客户端都需要。使用休眠可能会导致类文件出现问题,人们最终拥有两组模型对象,并使用自定义 GWT-RPC 发出服务器请求并在客户端和服务器端模型对象之间编码/取消编码。不是一个理想的解决方案。即使您可以使用相同的模型对象,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();
}

这是一个为每个域对象提供请求方法的接口(interface)。项目中没有定义此类的实现。它通过调用 GWT.create(...) 在 EntryPoint 中实例化:

final ApplicationRequestFactory requestFactory = 
    GWT.create(ApplicationRequestFactory.class);
requestFactory.init(eventBus);

com.springsource.extrack.gwt.request 包中,您将看到一个 ApplicationEntityTypesProcessor.java,它巧妙地使用泛型来打包对域类的引用,以便稍后在演示中使用。该包的其余部分是每个模型对象的事件和处理程序。

具体而言,每个对象有四个自动生成的类:

  • EmployeeRecord.java - 这是域对象的 DTO。
  • EmployeeRecordChanged.java - 这是一个 RecordChanged 事件,用于提供 Hook 方法 onEmployeeChanged。
  • EmployeeChangedHandler.java - 这是一个接口(interface),将在需要 onEmployeeChanged 的​​特定行为时实现。
  • EmployeeRequest.java - 这是 ApplicationRequestFactory 用于打包给定对象的各种访问方法的接口(interface)。

请记住,幕后生成了大量代码来支持所有这些。从 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 了解更多信息。此外,expense.roo 演示了如何使用 Places,并且还有一个相当灵活的 Activity 框架。快乐 GWTing。

问候。

关于gwt - 如何将 Spring Roo 和 GET 结合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283723/

相关文章:

java - GWT:如何确保在构建 GWT 页面后运行 JavaScript

java - GWT MAP 中的 Activity 指示器

java - Eclipse、QueryDSL 和 Spring Roo 一起工作?

java - spring roo可以解析注释@javax.validation.constraints.Size参数中的变量吗?

GWT servlet过滤器,如何识别特殊服务请求?

GWT 和 getClass().getPackage()

c++ - 使用 GWT 调用 C++ RPC 服务

java - 带有内容管理系统的 GWT

java - GWT RemoteServiceServlet 的数量

list - Spring Roo - MongoDb -- 字符串列表