4

我的问题是:例如,将我的 Java EE 注释实体 bean 的数据发送到客户端以在网格中使用它的最佳方式是什么?当然,我可以手动为每个实体制作 BaseModel 扩展的客户端模型,但我想知道这里的最佳实践是什么。如果可能的话,我需要一个分步教程。

4

3 回答 3

3

我已经使用 ext-gwt (gxt) 大约一年了,感觉到你的痛苦!

从我到目前为止所学到的知识来看,似乎有 3 种策略可以在客户端和服务器之间来回传输 bean:

以下是每种策略的概述:

  1. 为每个服务器端对象 bean/pojo/entity bean 创建一个扩展 BaseModel 的客户端 pojo/bean。
  2. 在客户端和服务器之间共享 pojo/bean
  3. 在发送到客户端之前将服务器端 pojo/beans 转换为 json,然后在客户端使用 Javascript (json) 对象。

当然,各有取舍。

策略#1很好地集成到 gxt 中。您可以使用 gxt 的内置存储和绑定。这是我在生产应用程序中使用的策略并且它已经奏效,但我发现在客户端和服务器上复制 bean 很乏味。就个人而言,我还发现 extjs(和 gxt)的存储/绑定机制可能过于复杂,并且难以针对极端情况进行扩展。

策略 #2:这是我最有可能在下一个 gxt 项目中使用的策略。缺点是您必须在客户端的 gxt 中进行自己的表单和网格绑定。但好处是你可以分享你所有的豆子/pojos。以下是实现细节的快速概览:

在您的服务器端 src 树中,将一个 .gwt.xml 文件添加到包含您的服务器 pojo/bean 类的根包中。例如:我在 com.daveparoulek.gwt.server.models 下创建了这个名为“gwt-models.gwt.xml”的文件

<module rename-to='gwt-models'>
    <inherits name='com.google.gwt.user.User' />
    <source path="client" />
</module>

在上面的示例中,bean 实际上位于 com.daveparoulek.gwt.server.models.client 中。

完成该设置后,您可以通过在 gwt 客户端项目的 gwt.xml 文件中添加“inherit”标签来配置客户端 gwt 项目以在 com.daveparoulek.gwt.server.models 中包含 src 代码,例如:

<inherits name="com.daveparoulek.gwt.server.models" />

策略#3:在观看了 google 关于 gwt 的一些演讲之后,这似乎是他们在客户端处理对象的首选方式。虽然,这会导致为每个服务器端 pojo/bean 创建一个 json 覆盖类型。这也不完全适合 gxt 世界。单击此处了解有关此概念的很好的介绍。

于 2009-11-17T14:59:15.177 回答
0

我不是专家,但似乎人们正在使用Gilead(有教程)+ GWT + GXT 来简化流程。

于 2009-11-17T14:56:23.670 回答
0

BeanModelFactory 是浪费时间。根据Sencha 帮助文档get(),您可以在 BeanModelFactory 从调用静态方法返回的内容上调用 getFactory 。按照他们的例子,这个返回值原来是 BeanModelFactory 类本身的一个实例,它有一个未实现的(抽象)getFactory()方法。

因此,您不知从何处获得了一个不错的空指针。

我会坚持策略#1。

于 2011-04-23T02:28:33.580 回答