0

私は gwtp フレームワークを使用して gwt2.3 アプリケーションに取り組んでいます。このアプリケーションでは、クライアント モジュールによってバインドされるログイン (インデックス) ページが 1 つあります。

bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.login);

ログインに成功すると、新しい名前トークン名のユーザー ページが表示されます。

     History.newItem(NameTokens.userconsole,true);

今、私は以下のような履歴ハンドラを持っています:

public class NameTokenHandler は ValueChangeHandler を実装します {

@Override
public void onValueChange(final ValueChangeEvent<String> event) {
    System.out.println("Nothing to do");
}

}

そして、エントリポイントクラスで以下のように履歴に追加しました:

History.addValueChangeHandler(new NameTokenHandler());

onValueChange メソッドをオーバーライドしたので、空白のままにしました。

したがって、アプリケーションが最初に読み込まれるか、他の名前トークンが起動されると、最初に onValueChange を呼び出す必要があります。このメソッドにはコードがないため、何も読み込まれません。

しかし、アプリケーションでは正常に動作しています。onValueChange にコードがなくても、すべての名前トークンが正常に起動しています。履歴トークンの発火を防ぐ方法がわかりません。

私を助けてください。

前もって感謝します。

4

2 に答える 2

1

したがって、アプリケーションが最初に読み込まれるか、他の名前トークンが起動されると、最初に onValueChange を呼び出す必要があります。このメソッドにはコードがないため、何も読み込まれません。

gwtp Historyを使用している場合、ValueChangeHandler はアプリケーションの特定の部分へのナビゲーションを妨げたり有効にしたりしません。それはすべてPlaceManagerで処理されます。

于 2011-09-09T19:28:05.030 に答える
0

少しグーグルした後、私はプレイスマネージャーについて知るようになりました。履歴に変更ハンドラーを追加しています。すでに追加されているすべての変更ハンドラーはまだそこにあります。特に、GWTPのPlaceManagerImplコンストラクターにあるものです。

一部の履歴イベントがGWTPによって処理されないようにする場合は、カスタムPlaceManagerで、onValueChange(...)をオーバーライドし、ブロックするトークンをインターセプトして、トークンに対して親のonValueChangeを呼び出すことをお勧めします。 GWTPで正常に処理する必要があります。

于 2011-09-12T05:08:14.180 に答える