我的GWT应用程序有十种不同的实体。现在我使用普通的旧DTO并通过GWT-RPC传输它们。这适用于启动等情况 - 我可以将它们全部打包到一个请求中。
我正在寻找切换到RequestFactory,因为在我需要更新一种类型的实体以及RequestFactory的统一/带宽保存功能时,应用程序的整个生命周期中有很多次(平均30分钟)很有吸引力。但是:我没有看到在应用加载时在单个请求中下载所有初始化数据的方法。我不想要为我的十种实体类型提取十个请求来获取所有init数据。
有没有办法制作GeneralRequestContext,还是什么?我甚至对以下解决方案感到满意:
public interface InitDataProxy extends EntityProxy
{
public UserProxy getInitUsers();
public OrganizationProxy getInitOrganizations();
...
}
public interface GeneralRequestContext extends RequestContext
{
Request<InitDataProxy> getInitData();
}
但是这不起作用,因为我不想用任何东西实际支持InitDataProxy,我只想用它在一个请求中组合一堆不同类型的代理。
那么:有没有办法在单个请求中接收多个不相关类型的EntityProxy
?
我也很乐意将一个正常的gwt-rpc请求发送到RequestFactory以外的数据,但我不想在RequestFactory的代理旁边运行重复的DTO,并编写自定义代码来复制DTO进入他们!
答案 0 :(得分:4)
InitDataProxy
可以扩展ValueProxy
,这不要求服务器上的对象具有任何类型的id或版本语义。域端InitData
类型可以是接口,可能使用匿名类型实现。
interface InitData {
User getUser();
Organization getOrgatization();
}
class InitService {
static InitData makeInitData() {
return new InitData() { ..... };
}
}
@ProxyFor(InitData.class)
interface InitDataProxy extends ValueProxy {
UserProxy getUser();
OrganizationProxy getOrganization();
}
@Service(InitService.class)
interface Init extends RequestContext {
Request<InitDataProxy> makeInitData();
}