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

时间:2011-10-02 11:08:42

标签: java gwt requestfactory gwt-2.4

是否可以在@ Entity-annotated类之外实现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
}

1 个答案:

答案 0 :(得分:2)

是的,你可以。官方GWT documentation中提到了这一点,但不是很详细。

David Chandler为此blog post找到了很大的帮助。

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

实体定位器方法findcreategetIdgetVersion)可以在通用定位器类中移动({{3 }})。为此,您的实体必须扩展具有getIdgetVersion方法的BasicEntity类。然后在客户端上,您将指定这样的定位器:

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


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

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

// 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);
... 
}

还要注意服务定位器的需求。它可以像example一样简单。