Я наконец начинаю "получать" GWT. В любой момент PlaceChangeEvent
можно запустить в приложении EventBus
следующим образом:
History.newItem("token-for-some-new-place");
Это добавляет событие в шину, в результате чего зарегистрированный ActivityManager
получает его и консультируется со своим внутренним ActivityMapper
, чтобы передать ему Activity
, связанный с Place
PlaceChangeEvent
.
Затем Activity
(аналогично объекту презентатора или контроллера из MVP/MVC) получает любые необходимые данные (посредством вызовов RPC к серверу), выполняет любую бизнес-логику и настраивает окончательное представление (обычно Composite
какого-либо вида) для отображения. .
Пока мы говорим о сверхпростом приложении GWT, которое имеет только одну область отображения на главной странице, то, как я уже сказал, я «понимаю».
Теперь я задыхаюсь, когда у вас есть приложение, содержащее несколько областей отображения (области, которые могут обновляться асинхронно друг от друга).
Поэтому я спрашиваю:
- Насколько детализированными должны быть
ActivityMapper
? Существует ли только одинAppActivityMapper
для всего приложения, который сопоставляет всеPlace
со всемиActivity
, или должна быть какая-тоActivityMapper
иерархия/декомпозиция, где у вас есть несколько сопоставителей? (И если ваш ответ на это что-то вроде «это зависит от потребностей вашего приложения», то, пожалуйста, объясните, какие требования/потребности определяют соответствующий уровень детализации!) - Если
Place
представляет токен URL в вашем приложении (для того, чтобы сделатьPlace
состояние закладкой), то что произойдет, если у вас есть более сложное приложение с несколькими областями отображения (D1, D2, D3). Как один токен URL (например,http://myapp.com/#token-for-some-new-place
) сопоставляется с D1, D2 и D3? Разве это не означает, чтоActivityMapper#getActivity
должна быть способна возвращать список действий (List<Activity>
), чьиstart(AcceptsOneWidget, EventBus)
методы будут вызываться?
Спасибо за любую помощь здесь - примеры кода всегда потрясающие.
PlaceController.goTo()
), а не низкоуровневыеHistory
. - person Thomas Broyer   schedule 28.10.2012