2016-05-12 6 views
1

プレゼンターのデータをクリアするにはどうすればよいですか?私はログイン時に私のUIをクリアしたいと思います。GWTP - プレゼンターのデータをクリア

現在の問題の例として、フォームデータを収集するために使用されるNestedPresenterがあります。誰かがログアウトすると、ブラウザセッションがまだアクティブな間に別のユーザがログインし直すことができ、フォームが公開されると、以前のユーザのデータはまだ表示されます。

推奨事項

答えて

1

これは、アプリケーションで使用しているナビゲーションに大きく依存します。 PlaceManagerを使用してほとんどステートレスな画面をナビゲートする場合は、onResetメソッドをオーバーライドする方法が、私があなたにおすすめの場所です。ナビゲーションが毎回プレゼンターになります。クリアコードが実行されるからです。

Referring to documentation

onReset()

これは、各ユーザのナビゲーション要求の終了時に起こります。たとえば、 すでにバインドされているプレゼンター にユーザーが移動したときにコードを実行する必要がある場合は、すでにスロットに追加されています。 をオーバーライドする必要があります。しかし、これは頻繁に呼び出されるので注意してください。したがって、このメソッドではあまり重すぎるものは実行しないでください。

新しいモデルを取得してから、新しいモデルを取得してください。 onResetがあなたのためにあまりにも頻繁にされている場合 - onReveal()に固執し、その後

プレゼンターが明らかにされているときonReveal()

onReveal()が呼び出されます。 GWTPの語彙 にプレゼンターが追加されたことを意味します。したがって、必ずしもオブジェクトがDOM内に と表示されるわけではありません。曖昧さを理解するには、この問題を参照してください。この は、 プレゼンターがSlotに追加されようとしているときに何かを更新したいときにオーバーライドする必要があります。

とonRevealは(あなたはすべての時間スロットに挿入され、プレゼンターを保つ+ナビゲーション要求は関係ありません)何とかあなたのケースで動作しない場合は - ちょうど明確な情報あなたのプレゼンターが隠されているたびに、onHide()

をオーバーライド経由
+0

答えをありがとう。適切な時にgwtpライフサイクルに接続している間に、カスタムデータのクリアを提案しているような気がします。そのアプローチの私の懸念は、そのメンテナンスの頭痛とエラーになりやすいです。新しいデータや条件付きで表示される要素などの新しい機能を導入するたびに、私はカスタムクリアデータメソッドを更新する追加のタスクを持っています。 –

+0

さて、そのようなメソッドをあなたのビューに置き、それをプレゼンターのライフサイクルのどこかで呼びます。 GWTP afaikにはデータバインディングはありません。そのため、モデルを設定したときに、ビューに表示される内容だけを知ることができます。このような場合に通常行うことは次のとおりです。1. ViewおよびViewImplのoutメソッドsetModel(SomeJavaPojoモデル){}を作成し、setModel(new SomeJavaPojo())を呼び出してデフォルト値を設定する別のメソッドclear()を作成します。また、onResetはあなたの小さなPresenterWidgetsにカスケードされることに注意してください。コードがうまく粒状化されていれば、 –

関連する問題