PlaceTokenizer が何をしているのか本当に理解できませんか? gwt履歴メカニズムがそれを使用してブラウザのURLに入れることができるように、彼は場所のクラス名を文字列に変換しますか? それは私が理解していることですが、これが正しいかどうかはわかりません。
1 に答える
まず、PlaceTokenizer
はジェネレーター for と組み合わせてのみ使用されPlaceHistoryMapper
ます (つまり、GWT.create()
を拡張するインターフェースの場合。必要に応じてPlaceHistoryMapper
、そのインターフェースを具象クラスに自由に実装できます)。ジェネレーターは、履歴トークン( #
URL の の後の部分) を接頭辞と場所のトークンで構成するように強制します。PlaceTokenizer
プレフィックスは、特定のタイプと一致させるために使用され、トークナイザーの@Prefix
注釈によって指定されるか、トークナイザーによって処理される場所の単純な名前にデフォルト設定されます。
履歴トークンを解析するとき(handleCurrentHistory()
初期化時に が呼び出されたとき、またはブラウザーの履歴を使用して移動したとき)、プレフィックスが に一致し、PlaceTokenizer
そのトークナイザーのインスタンスが取得された後 ( を使用している場合はファクトリからPlaceHistoryMapperWithFactory
、または作成されたデフォルトのゼロ引数コンストラクターを使用して)、プレース トークンがメソッドに渡され、トークナイザーはプレース トークンgetPlace
に対応するプレースをインスタンス化することが期待されます。
場所をシリアル化するとき (アプリ内をナビゲートするときPlaceController#goTo(Place)
)、場所のタイプに基づいてトークナイザーが取得され (トークナイザーのジェネリック パラメーターと照合されます)、場所が に渡されgetToken
ます。場所のために。はPlaceHistoryHandler
プレフィックスを前に追加し、URL を更新します。
場所のトークンは何でもかまいませんが、そのタイプではなく、場所に含まれるデータ (フィールド) に基づいています (これは履歴トークンのプレフィックスとして反映されます) 。