2

gwtp ゲートキーパーについていくつか知りたいことがあります。

  1. canReveal()メソッドが を返した場合false、どうなりますか? 私のテストでは、デフォルトの場所にリダイレクトされました。変更できますか?

  2. 次のような入れ子になったプレゼンターを持つ:

    MenuPresenter- 管理者にのみ表示されます。

    HomePresenter- 管理者と通常のユーザーに表示されます。

    ログインしているユーザーが一般ユーザーの場合、メニュープレゼンターのみを「非表示」にしたいのですが、可能ですか?

ありがとう

4

2 に答える 2

3

1 - 「canReveal() メソッドが false を返す場合、どうなりますか?私のテストでは、デフォルトの場所にリダイレクトされましたが、変更できますか?」

GWTP wikiから:

「プレゼンター処理エラーは、カスタム PlaceManager のrevealErrorPlaceメソッドによって明らかにされたものです。そのメソッドをオーバーライドしない場合、それはあなたのrevealDefaultPlaceメソッドによって明らかにされたものです。」

これは のデフォルトの実装ですrevealErrorPlace:

public void revealErrorPlace(String invalidHistoryToken) {
    revealDefaultPlace();
}

そのため、カスタム PlaceManager でそれをオーバーライドし、さらにロジックを追加して、必要な場所にリダイレクトできます。


2 - 「ログインしているユーザーが通常のユーザーの場合、メニュープレゼンターのみを「非表示」にしたいのですが、可能ですか?」

次のように、プレゼンターでビューを非表示にできます。

@Override
protected void onReset() {
    super.onReset();

    if (!user.getAdmin) {
        getView().asWidget().setVisible(false);
   }
}

(PopupPresenters の場合は、onReveal() メソッドをオーバーライドする必要があります)

于 2011-09-30T09:43:31.930 に答える
1

ええと、ドキュメントを更新する必要があると思います。

また、revealUnauthorizedPlaceをオーバーライドすることもできます。これにより、エラー処理とセキュリティのための明確なプロセスが確保されます。

デフォルトでは、revealUnauthorizedPlaceはrevealsErrorPlaceを呼び出します。

于 2011-10-07T12:17:59.240 に答える