2013-10-09 2 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과 엔티티 전자로드 변수 E1에
  2. 클라이언트 2 보관 : 변화와
  3. 전자를 지속
  4. 클라이언트 1 부하 엔티티 E 또 변수 (E2)에 유지 (버전 2)
  5. 클라이언트 1 : RequestContext "REQ"
  6. 클라이언트 (1) 생성 : editableE1 req.edit = (E1)를;
  7. 클라이언트 1 : editableE2 = req.edit (e2);

editableE2의 정의 된 값은 무엇입니까? 이 컨텍스트에서 이미 편집되었으므로 editableE1과 동일한 객체입니까? 아니면 새로운 AutoBean? 조금 혼란스러워 ... 누가 나를 분명히 할 수 있니? :)

+0

한편, 요청 컨텍스트에 일종의 캐싱이 있으며 RequestContext.edit()가 캐시 된 인스턴스를 반환했을 때만 내 경고가 발생한다는 것을 알게되었습니다. 그러나 이것은 여전히 ​​RequestContext.edit()의 실제 의미에 대한 질문을 떠난다. – user2618802

답변

0

당신은 문제를 요구하고 있습니다!

editableE2 즉 그 부모 e1 빈이 불변 인 편집 콩 editableE1 동일하다.