GWT - 如何在 @Entity 注释的类之外实现 RequestContext 方法?

发布于 2024-12-07 12:13:34 字数 316 浏览 0 评论 0 原文

是否可以在 @Entity 注解的类之外实现 RequestContext 方法?

@Entity
class TheEntity {
  public static TheEntity theMethod() { ... } // don't want it here
}

@Service(TheEntity.class)
interface TheEntityRequest extends RequestContext {
  Request<TheEntity> theMethod(); // this one
}

Is it possible to implement RequestContext methods outside an @Entity-annotated class?

@Entity
class TheEntity {
  public static TheEntity theMethod() { ... } // don't want it here
}

@Service(TheEntity.class)
interface TheEntityRequest extends RequestContext {
  Request<TheEntity> theMethod(); // this one
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好菇凉咱不稀罕他 2024-12-14 12:13:34

是的,你可以。官方 GWT 文档中提到了这一点,尽管不是很清楚详细的。

我发现这篇博客文章 大卫·钱德勒。

一些提示:
(示例链接来自博客文章中讨论的项目)

实体定位器方法findcreategetId , getVersion) 可以在通用定位器类 (示例)。为此,您的实体必须扩展具有 getIdgetVersion 方法的 BasicEntity 类。然后在客户端上,您可以像这样指定定位器:

@ProxyFor(value = MyEntity.class, locator = GenericLocator.class)
public interface MyEntityProxy extends EntityProxy {
...
}

数据访问方法可以在服务中移动。您可以拥有通用服务 (示例),然后为每个实体扩展它以提供特定的方法(示例)。

在客户端上,您可以这样定义服务:

// MyEntityDao is your server service for MyEntity
@Service(value = MyEntityDao.class, locator = MyServiceLocator.class) 
interface MyEntityRequestContext extends RequestContext { 
Request<List<MyEntityProxy>> listAll();
Request<Void> save(MyEntityProxy entity);
... 
}

还要注意服务定位器的需要。它可以像 这个

Yes, you can. This is mentioned in the official GWT documentation, though it's not very detailed.

I've found of great help this blog post by David Chandler.

Some pointers:
(example links are from the project discussed in the blog post)

Entity locator methods (find, create, getId, getVersion) can be moved in a generic Locator class (example). For this to work your entities must extend a BasicEntity class that has the getId and getVersion methods. Then on the client you would specify the locator like this:

@ProxyFor(value = MyEntity.class, locator = GenericLocator.class)
public interface MyEntityProxy extends EntityProxy {
...
}

Data access methods can be moved in a service. You can have a generic service (example), and then extend it for each entity to provide specific methods (example).

On the client you define your service like this:

// MyEntityDao is your server service for MyEntity
@Service(value = MyEntityDao.class, locator = MyServiceLocator.class) 
interface MyEntityRequestContext extends RequestContext { 
Request<List<MyEntityProxy>> listAll();
Request<Void> save(MyEntityProxy entity);
... 
}

Note the need for a service locator also. It can be as simple as this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文