【发布时间】:2013-10-09 07:22:05
【问题描述】:
我想知道我对 RequestContext.edit() (GWT 2.5.1) 方法的语义是否正确。 在我看来,以下 sn-p 中的警报永远不会发生。我对 RequestContext.edit() 的语义是对还是错?
ICurTournamentPu ctpu = c.getPu(PUK3.curTournament);
TourneyProxy origTourney = ctpu.getTourney();
this.tourney = req.edit(origTourney);
// TODO begin test
{
List<DisciplineProxy> otdl = origTourney.getTourneyDisciplines().getList();
List<DisciplineProxy> tdl = tourney.getTourneyDisciplines().getList();
if (otdl != null && tdl != null && otdl.size() != tdl.size()) {
Window.alert("otdl.size()=" + otdl.size() + " != " + tdl.size() + "=tdl.size()");
}
}
// TODO end test
似乎通过来自可编辑实体的某些链接引用的列表包含的元素多于通过来自原始不可编辑实体的等效链接引用的列表。这会在调用 RequestContext.edit() 后立即发生。似乎在某种程度上,即使在从服务器刷新之后,来自同一客户端的旧更改也被保留了。 顺便说一下,以下场景的定义语义是什么:
- 客户端 1:加载版本 1 的实体 e 并将其保存在变量 e1 中
- 客户端 2:更改和持久化 e
- 客户端 1:再次加载实体 e(使用版本 2)并将其保存在变量 e2 中
- 客户端 1:创建一个 RequestContext "req"
- 客户端 1:editableE1 = req.edit(e1);
- 客户端 1:editableE2 = req.edit(e2);
那么,editableE2 的定义值是多少?与 editableE1 相同的对象,因为已经在此上下文中进行了编辑?还是新的 AutoBean?有点混乱...有人可以为我澄清一下吗? :)
【问题讨论】:
-
同时,我发现请求上下文中有某种缓存,并且我的警报仅在 RequestContext.edit() 返回缓存实例时发生。但是,这仍然留下了关于 RequestContext.edit() 的实际语义的问题......
标签: gwt edit requestfactory requestcontext