GWT - как реализовать методы RequestContext вне аннотируемого класса @ Entity? - PullRequest
1 голос
/ 02 октября 2011

Возможно ли реализовать RequestContext методы вне класса, аннотированного @ Entity?

@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 Ответ

2 голосов
/ 03 октября 2011

Да, вы можете.Это упомянуто в официальной документации GWT , хотя и не очень подробно.

Мне очень помогло это сообщение в блоге Дэвида Чандлера.

Некоторые указатели:(примеры ссылок взяты из проекта, обсуждаемого в сообщении в блоге)

Методы поиска сущностей (find, create, getId, getVersion) можно перемещать вуниверсальный класс локатора ( пример ).Чтобы это работало, ваши сущности должны расширить класс BasicEntity с методами getId и getVersion.Затем на клиенте вы должны указать локатор следующим образом:

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

Обратите внимание также на необходимость поиска службы.Это может быть так просто, как это .

...