0

我正在尝试实现自定义导航,它可以完成通常的工作并更新我的面包屑。

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. 第二次,这些参数包含正确的值。

处理程序已在 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 回答