GWTP Presenter и View сохраняют старые значения - PullRequest
0 голосов
/ 17 декабря 2018

Я использую GWTP, и все мои докладчики расширяют класс Presenter.Если я перейду от A к B и затем вернусь к A, тогда вместо новых значений старые значения в форме A по-прежнему будут отображаться так, как если бы он отображал копию старых значений.

Как я могу заставить приложение создавать новые экземпляры Presenters, чтобы избежать отображения старых значений?

1 Ответ

0 голосов
/ 17 декабря 2018

Presenter и Views обычно являются дорогостоящими для создания экземпляров, поэтому GWTP рекомендует использовать оба в качестве синглтона, так как представление не требуется, поскольку докладчик будет сохранять экземпляр, чтобы он работал как внутренний синглтон.В этом случае, в текущем случае, просто сбросьте состояние докладчика на одном из этапов жизненного цикла «prepareFromRequest», «onReveal» или «onReset» в зависимости от того, как работает ваше представление.

Обратите внимание, что сделать это гораздо проще, чем кажется, если ваше представление не синхронизировано с докладчиком, что должно быть в вашем случае, просто переместите код из менее часто обновляемого жизненного цикла (например,. Construction или onBind) к более часто обновляемому (например, onReveal или onReset), тогда, когда вы перемещаетесь по своему докладчику и отображается представление, это будет корректно обновляться, и проблема с единичным узлом станет неактуальной.

Если вы действительно хотите создать не одиночный докладчик, вы можете выполнить привязку вручную вместо использования AbstractPresenterModule # bindPresenter.Это может быть немного опасно, если вы попытаетесь сослаться на докладчика в нескольких местах, а также во время сброса докладчик будет таким же, но я думаю, что это будет новый экземпляр при каждом открытии.

...