Существует несколько библиотечных проектов MVP для GWT, которые используют концепцию Места для представления состояния докладчиков. Реализации размещения обычно отображают состояние на фрагмент URL после #. Следовательно, они работают аналогично обработке состояния Gmail.
Например, при использовании проекта gwt-Presenter у вас могут быть DataPresenter и DataPlace:
public class DataPlace extends ProvidedPresenterPlace<DataPresenter> {
@Inject
public DataPlace(Provider<DataPresenter> presenter) {
super(presenter);
}
@Override
public String getName() {
return "data";
}
@Override
protected void preparePresenter( PlaceRequest request, DataPresenter presenter ) {
String state = request.getParameter("state", null);
if (state != null) {
// set the presenter state
presenter.setState(State.valueOf(state));
}
}
@Override
protected PlaceRequest prepareRequest( PlaceRequest request, DataPresenter presenter ) {
return request.with("state", presenter.getState().toString());
}
}
Когда URL имеет форму / data # state = 12345, это место будет предложено подготовить докладчика на основе параметров. После этого будет открыт метод открытия в Presenter. Поскольку состояние уже было подготовлено Местом, вы сможете восстановить представление по мере необходимости.