2010-04-13 2 views
0

MVP 패턴을 사용하여 GWT 앱을 개발하려고합니다. 지금까지 한 가지 특별한 경우를 제외하고는 URL을 변경하지 않는 행동 (브라우저 기록 변경 없음)브라우저 기록 변경없이 GWT/MVP 작업에 대한 입력을 찾고

GWT MVP 패턴에서 이벤트는 발표자로부터 전송되고 앱 컨트롤러는 이벤트를 캐치하고 브라우저 기록을 업데이트합니다. 히스토리가 변경되면보기가 갱신됩니다.

이 ** 역사의 변화 MVP는 ** (잘 작동)

Current URL is /list 
User clicks on contactdelete button. 
Fire DeleteContactAction event. 
App controller catches, change history to 'delete' 
onValueChange is called 
if (token.equals("delete")) 
delete contact screen, then delete contact 
Fire ContactDeletedEvent 
app controller catches and change the history to list 
onValueChange is called: contact list refreshes 
대화 상자

GWT MVP 패턴 w 역사는 변화/O를

** 호 ** - 나는 대화 상자를 사용하여 나는 브라우저 기록을 변경하지 않기 때문에 문제는 여기에 있습니다 :

Current URL is /list 
    User clicks on contactdelete button. 
    Contact is deleted 
    Fire ContactDeletedEvent. 
    App controller catches, change history to 'list' 
    **onValueChange is NOT called** because url is already /list and there is no change 
    # problem: contact list does not refresh 

는 질문 : 사람이 MVP의 맥락에서이를 구현하는 패턴을 알고 있나요?

도움/아이디어를 높이 평가.

답변

0

자동으로 기록 변경 사항을 적용하는 일부 프레임 워크 (GWT 제외)를 사용하고 있습니까?

일반 GWT/MVP는 변경 기록을 요구하지 않으며 사실 일반적으로 기록 자체를 업데이트하는 것은 앱에 달려 있습니다.

히스토리 변경없이 앱의 상태를 업데이트하려는 경우 EventBus를 사용하여 앱의 다른 요소가 구독 할 수있는 이벤트를 게시하여 기록 변경없이 앱의 상태를 업데이트 할 수 있습니다.

+0

여기에서 자습서의 예제를 사용하고 있습니다. http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html 이 예제에서 이벤트는 변경되는 appcontroller에 의해 수집됩니다 브라우저 히스토리가 처리를 트리거합니다. 나는 앱 컨트롤러에서 이벤트의 중앙 집중화를 유지하려고하지만 *이 이벤트는 다음과 같이 처리됩니다. *이 변경 사항은 기록 변경과 함께 변경됩니다. 무슨 뜻인지 알아보세요. – user198313

+0

그래, AppController가 이벤트를 수집하고 앱의 다른 부분이 듣는 이벤트 변경 사항을 트리거하는 대신, 앱의 다른 부분에서 관련 이벤트를 수신하도록 할 수 있습니다. GWT MVP 개발을위한 또 다른 좋은 프레임 워크는 gwt-presenter이며,이 예제 프레임 워크와 달리 적극적으로 개발됩니다. http://code.google.com/p/gwt-presenter/ –

0

기본적으로 자신 만의 PlaceHistoryHandler를 만들어야합니다. 맞춤 PlaceHistoryHandler는 특정 유형의 PlaceChangeEvent를 무시합니다 (예 : Historian을 업데이트하지 않음).

+1

왜이 작업을 수행하고 있는지 더 자세히 알 수 있습니까? –

관련 문제