public HtmlToolBar getToobar() {
  Application application = FacesContext.getCurrentInstance().getApplication();
  UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
  if (this.toobar == null) {
   this.toobar = (HtmlToolBar) application.createComponent(HtmlToolBar.COMPONENT_TYPE);
  }
  // 清空toolbar
  this.toobar.getChildren().clear();
  PermitDAO pd = new PermitDAO();
  List list = pd.findAll();
  Permit pt;
  MethodBinding mBinding;
  // 循环放进树结构
  for (int i = 0; i < list.size(); i++) {
   pt = (Permit) list.get(i);
   if (parm.containsKey(pt.getParentno())) {
    ((List) parm.get(pt.getParentno())).add(pt);
   } else {
    List li = new ArrayList();
    li.add(pt);
    parm.put(pt.getParentno(), li);
   }
  }
  // 解开  if (parm.containsKey("-1")) {
   List li = (List) parm.get("-1");
   for (int i = 0; i < li.size(); i++) {
    pt = (Permit) li.get(i);
    HtmlDropDownMenu dm = (HtmlDropDownMenu) application.createComponent(HtmlDropDownMenu.COMPONENT_TYPE);
    dm.setValue(pt.getName());
    dm.setId(viewRoot.createUniqueId());
    Object obj = null;
    if ((obj = parm.get(pt.getNo())) != null) {
     List su = (List) obj;
     for (int t = 0; t < su.size(); t++) {
      pt = (Permit) su.get(t);
      HtmlMenuItem mi = (HtmlMenuItem) application.createComponent(HtmlMenuItem.COMPONENT_TYPE);
      mi.setValue(pt.getName());
      mi.setId(viewRoot.createUniqueId());
      //Class[] clas={String.class}; 
      mBinding = application.createMethodBinding("#{"+pt.getLink()+"}", null);    
      System.out.println(mBinding.toString());
      mi.setAction(mBinding);
      mi.isImmediate();
      //mi.setTarget("document.mainframe");
      //mi.setSubmitMode("ajax");
      //System.out.println(pt.getName());
      dm.getChildren().add(mi);
     }
     //HtmlMenuGroup hm = (HtmlMenuGroup) application.createComponent(HtmlMenuGroup.COMPONENT_TYPE);
     //hm.setValue(pt);
    }
    toobar.getChildren().add(dm);
   }
  }
  return toobar;
 }
点击菜单跳转到本页面的一个iframe中,第一次调转是正确的,单每个菜单都点过一次,在回来点击就不正确,就会永远停留在一个页面,其他菜单都跳转不了测试了一下,发现,第一次跳转正确执行action,但是往后就会多次执行前面执行的action。
怀疑是jsf生命周期的问题,应为菜单页面没有刷新过。