JSF 1.2 NavigationHandler#handleNavigation被调用两次

时间:2012-12-20 09:29:56

标签: jsf jsf-1.2

我正在尝试实现自定义导航,执行常规工作并更新我的痕迹。

public class CustomNaviguationHandler extends NavigationHandlerImpl{

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

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

但是当我调试它时,该方法执行2次,

  1. 第一次,fromAction和结果为空
  2. 第二次,这些参数包含正确的值。
  3. 处理程序已在faces-config.xml

    中注册
    <navigation-handler>my.package.CustomNaviguationHandler</navigation-handler>
    

    我不确定为什么?有什么想法吗?

1 个答案:

答案 0 :(得分: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);
    }

}