2011-09-09 17 views
0

私はgwtpフレームワークでgwt2.3アプリケーションを開発しています。このアプリケーションでは、クライアントモジュールによってバインドされた1つのログイン(インデックス)ページがあります。gwtでヒストリトークンを起動した後にコードが実行されないようにするにはどうすればいいですか?

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

これで、成功したログイン後、新しい名前トークン名のユーザーページが起動されます。

 History.newItem(NameTokens.userconsole,true); 

今、私は以下のように私の履歴ハンドラがあります。

publicクラスをNameTokenHandlerはValueChangeHandler {

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

}

を実装し、私は、エントリポイントクラスに以下のような歴史に追加しました:

History.addValueChangeHandler(new NameTokenHandler()); 

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

アプリケーションが最初にロードするとき、または他の名前トークンが起動するときには、最初に というonValueChangeを呼び出す必要があります。このメソッドには何もロードされません。

しかし、アプリケーションでは正常に動作しています。 onValueChangeにコードがない場合でも、すべての名前トークンが正常に終了します。私は歴史トークンの発砲を防ぐ方法を得ていないのですか?

私を助けてください。

ありがとうございます。

答えて

0

グーグルで何人かの後に、私は場所マネージャーについて知りに行きました。 変更ハンドラを履歴に追加しています。 が既に追加されているすべての変更ハンドラはまだそこにあります。特に、GWTPの PlaceManagerImplコンストラクタのもの。

あなたが本当に GWTPによって処理されることから、いくつかの歴史イベントを防ぎたい場合は、私はそれを示唆し、カスタムPlaceManagerに、あなたがブロックするトークンを傍受、onValueChange(...)をオーバーライドし、 親のonValueChangeを呼び出して、GWTPが通常処理するトークンを とします。

1

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

あなたがgwtpを使用している場合歴史ValueChangeHandlerは、アプリケーションのparticualr部分へのナビゲーションを防止または有効にしません。それはすべてPlaceManagerで処理されます。

関連する問題