0

通常の仕事をしてブレッドクラムを更新するカスタム ナビゲーションを実装しようとしています。

public class CustomNaviguationHandler extends NavigationHandlerImpl{

     public void handleNavigation(FacesContext context, String fromAction, String outcome) {
         //do the breadcrumb update

         super.handleNavigation(context, fromAction, outcome);
     }
}

しかし、デバッグすると、メソッドは1回2回実行され、

  1. 1回目、fromActionとoutcomeがnull
  2. 2 回目は、これらのパラメーターに正しい値が含まれています。

ハンドラーは、faces-config.xml に登録されています。

<navigation-handler>my.package.CustomNaviguationHandler</navigation-handler>

なぜだかよくわかりません。何か案が?

4

1 に答える 1

0

JSF impl クラスNavigationHandlerImplをまったく拡張しないでください。代わりに、JSF API クラスを拡張する必要がありますNavigationHandler

キックオフの例を次に示します。handleNavigation()メソッドで仕事をしてください。ナビゲーションの責任を負いたくない場合は、 に委任してparentください。

public class CustomNavigationHandler extends NavigationHandler {

    private NavigationHandler parent;

    public CustomNavigationHandler(NavigationHandler parent) {
        this.parent = parent;
    }

    @Override
    public void handleNavigation(FacesContext context, String from, String outcome) {
        parent.handleNavigation(context, from, outcome);
    }

}
于 2012-12-20T11:28:46.950 に答える