2012-03-14 90 views
3

我的問題如下:我有一個MVP GWT應用程序,其中包含一個顯示數據集的表。有幾百個數據集,所以我決定將表格分成20個結果頁。我通過一個獲取pagenumber作爲參數的GWT-RPC服務從服務器加載每個頁面。GWT MVP更新歷史令牌而不更改活動

現在我想要做以下事情:我想保存用戶在歷史令牌中看到的表的頁面(所以令牌會像TablePlace:page = 5),但我不想創建一個新的活動,因爲活動管理的其他元素(例如有一個TreeView)的狀態將會丟失。在我的情況下,TreeView的所有項目都會關閉,這不是我想要的。

如果我不啓動新的位置,用戶將無法使用瀏覽器的後退按鈕返回到他之前訪問過的頁面。

感謝您的幫助提前。

回答

4

你會發出正常PlaceControllergoTo導航到另一個地方,但在你的ActivityMapper,你會像以前一樣返回完全相同的Activity實例。在這種特殊情況下,ActivityManager不會停止/啓動活動,而是讓它運行它自己的生活(甚至沒有發信號通知地點已經改變;如果你想要的話,那麼讓你的Activity在返回之前告訴你的Activity)。

您可能還會發現FilteredActivityMapperCachingActivityMapper對於稍微不同的位置返回相同的活動很有用,而不會將負擔放置在您自己的映射器中。

+1

感謝您的幫助,做到了。這裏是我所做的:\t \t我的getActivity(Place place)方法的AppActivityMapper我寫了以下內容:if(place instanceof AbstractPlace &&((AbstractPlace)place).isSelfFired()){return lastActivity; } AbstractPlace是我寫過的一個類,因此添加selfFired布爾值非常簡單。如果我的Activity爲自己創建了一個位置,它將該屬性設置爲true,否則它是錯誤的。 – jcvj 2012-03-15 09:00:10