2012-08-23 2 views
3

내 앱에는 상대적으로 복잡한 활동/장소가 있습니다. 활동 시작시 상태 (토큰에서 모델로)를 분석하면 일부 서버 상호 작용이 발생합니다. 사용자 상호 작용에서 활동은 모델의 필요한 부분 만 업데이트하므로 일부 서버 상호 작용은 안전합니다. 활동/모델은 내부 상태를 갖습니다.장소/활동 시작 (gwt)없이 브라우저 기록을 변경하는 방법

활동을 다시 시작하지 않고 브라우저 기록에 상태를 반영 할 수있는 방법이 있습니까? "거의"작품

UPDATE 크리스 '솔루션을 (History.newItem(token) 또한 활동의 ​​시작을 유발)하지만 또 다른 문제는 로즈 : 내 UI에서 내가 리셋 버튼 (빈 토큰과 장소에 대한 링크)를 가지고있다. ui 주위를 클릭하면 토큰이 잘 업데이트되지만 재설정 버튼이 작동하지 않습니다. gwt는 그것이 같은 장소에 있다고 생각하고 리셋 클릭을 무시합니다. 이 문제가 발생하기 전에는 토큰과 장소가 변경되지 않았으므로 재설정 버튼도 작동하지 않았습니다. GWT가 "같은 장소로 돌아 가라."라고 말합니다.

그래서 장소 동등성에 관계없이 활동을 다시 시작할 수있는 방법이 있습니까?

답변

3

새 장소로 이동하지만 ActivityMapper에 동일한 활동 인스턴스를 반환하십시오. 이렇게하면 활동이 다시 시작되지 않습니다.
장소가 다른 의미 (예 : 브라우저 기록)에서 변경되면 활동을 업데이트하는 평균을 찾아야합니다. 예를 들어 GWT MVP updating Activity state on Place change을 참조하십시오.

+1

thomas - 항상 "시작"을 allways 호출하지만 생성자는 "새로운 활동"을 반환하는 경우에만 호출됩니다. 문제는 내가 사용자 입력/변경 URL (재시작 활동)과 사용자 인터페이스 (상호 작용 토큰 만)를 구별해야만합니다. – dermoritz

+1

일부 연구 후 시도하고 오류 나는 이해합니다. 매퍼가 동일한 작업을 반환하면 작업이 다시 시작되지 않는다는 사실이 핵심입니다. 리셋 버튼이 작동하지 않습니다. 하지만 지금은 모든 infos 장소에 있습니다. – dermoritz

2

이는 반 솔루션입니다, 나는 그것을 추천하고 싶지 않은 있지만, 난 여기를 추가 할 - 다만이 솔루션의 단점에 대해 경고 :

하는 당신은 추가 할 수 있습니다 History.newItem(token, false)을 호출하여 이벤트를 시작하지 않고 기록에 토큰을 보냅니다. 그것은 제대로 (만큼 당신이 제대로 토큰을 구축으로) 작동

  • : 때문에

    은 반 솔루션입니다.
  • 성능 문제의 일부도 해결됩니다. 토큰을 기록에 추가 할 때 활동이 다시 시작되지 않습니다.
  • 그러나 사용자가 기록을 통해 앞뒤로 이동하면 성능 문제가 계속 발생합니다 (그 이후로 이벤트가 다시 발생하기 때문입니다).
+0

thx - 정확히 내가 원하는 것입니다 : 사용자 상호 작용에 대한 재연은 없지만 앞으로/뒤로 및 URL 입력을 다시 시작하십시오. – dermoritz

+0

@dermoritz : 실제로 이것을 사용하려면 정말로 조심하십시오. 특히,'PlaceController.getWhere()'는 업데이트 된 장소를 돌려주지 않을 것입니다! –

+0

thats right, 내 업데이트를 참조하십시오. 이제 상태는 올바르게 반영되지만 리셋 링크는 여전히 작동하지 않습니다. – dermoritz

관련 문제