GWT MVP Обновление токена истории без изменения действия

Моя проблема заключается в следующем: у меня есть приложение MVP GWT с таблицей, в которой показаны наборы данных. Существует несколько сотен наборов данных, поэтому я решил разбить таблицу на страницы по 20 результатов в каждой. Я загружаю каждую страницу с сервера через службу GWT-RPC, которая получает в качестве аргумента номер страницы.

Теперь я хочу сделать следующее: я хочу сохранить страницу таблицы, которую пользователь видит в History-Token (таким образом, токен будет чем-то вроде TablePlace: page = 5), но я не хочу создавать новое действие потому что тогда состояние других элементов (например, TreeView), которым управляет действие, будет потеряно. В моем случае все элементы TreeView закрываются, чего я не хочу.

Если я не запустил новые места, пользователь не сможет использовать кнопку «Назад» в браузере, чтобы вернуться на страницу, которую он посещал ранее.

Заранее благодарны за Вашу помощь.


person jcvj    schedule 14.03.2012    source источник


Ответы (1)


Вы бы выполнили нормальный PlaceController goTo для перехода в другое место, но в вашем ActivityMapper вы бы вернули тот же самый Activity экземпляр, что и раньше. В этом конкретном случае ActivityManager не останавливает / не запускает действие, а вместо этого позволяет ему управлять своей собственной жизнью (даже не сигнализируя о том, что место изменилось; если вы этого хотите, пусть ваш ActivityMapper сообщит вашему Activity, прежде чем возвращать его).

Вы также можете найти FilteredActivityMapper и CachingActivityMapper полезными для возврата одного и того же действия для немного разных мест, не перекладывая нагрузку на свой собственный картограф.

person Thomas Broyer    schedule 14.03.2012
comment
Спасибо за вашу помощь, это помогло. Вот что я сделал: в моем методе getActivity (Place place) для AppActivityMapper я написал следующее: if (place instanceof AbstractPlace && ((AbstractPlace) place) .isSelfFired ()) {return lastActivity; } AbstractPlace - это класс, который я уже написал, поэтому было довольно легко добавить логическое значение selfFired. Если мой Activity создает место для себя, он устанавливает для этого атрибута значение true, в противном случае - false. - person jcvj; 15.03.2012