我想知道我对 RequestContext.edit() 方法(GWT 2.5.1)的语义是否正确。在我看来,以下代码段中的警报永远不会发生。我对 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?有点混乱...有人可以为我澄清一下吗?:)