2013-10-09 108 views
1

我想知道我是否正確的方法RequestContext.edit()(GWT 2.5.1)的語義。 在我看來,下面的代碼段中的警報不應該發生。我正確或錯誤地瞭解RequestContext.edit()的語義?gwt的requestfactory的語義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:1版加載一個實體e和保持它在參數E1
  2. 客戶2:變化和堅持Ë
  3. 客戶機1:負荷實體è再次(版本2),並保持它在可變E2
  4. 客戶機1:創建的RequestContext 「REQ」
  5. 客戶機1:editableE1 = req.edit(E1);
  6. 客戶端1:editableE2 = req.edit(e2);

什麼是editableE2的定義值呢?與editableE1相同的對象,因爲已經在此上下文中進行了編輯?還是新的AutoBean?有點混亂......有人能爲我澄清嗎? :)

+0

同時,我發現,在請求上下文中存在某種緩存,並且只有在RequestContext.edit()返回緩存實例時纔會發生警報。但是,這仍然留下了關於RequestContext.edit()的實際語義的問題...... – user2618802

回答

0

你在問煩惱!

editableE2將是相同editableE1,即一個可編輯的豆,其不可改變豆是e1