-3

我正在使用 p:tabMenu 组件。我有 4 个菜单项,每个菜单项都重定向到不同的 jsf 页面,但问题是该页面在不更改 activeindex 的情况下返回,并且 activeindex 保持与初始值为 0 相同。

此代码位于所有页面的模板页面上

<h:form>
    <p:tabMenu activeIndex="0">
        <p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star" />
        <p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench"  />  
        <p:menuitem value="Composants" url="/pagess/pagesComposant/Composant.jsf" icon="ui-icon-search"  />  
        <p:menuitem value="Dossier d'equivalence" url="DEQ.jsf" icon="ui-icon-document"  />  
    </p:tabMenu> 
    </h:form>

知道应该自动更改,我该如何解决这个问题?

我将托管 bean 托盘它不起作用

public class LoginBean {
    private int activeindex=0;
public int getActiveindex() {
        return activeindex;
    }

    public void setActiveindex(int activeindex) {
        this.activeindex = activeindex;
    }  

   public void Dirige(int a){

       activeindex=a;
   }}..



<p:tabMenu activeIndex="#{loginBean.activeindex}" > 
        <p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star"  action="#{loginBean.Dirige(0)}"/>  
        <p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench" action="#{loginBean.Dirige(1)}"/>
    </p:menuitem>

它也不起作用

我尝试为 everu menuitem 添加 update="@all" 。它是一样的 :(


我忘了告诉你。这个组件在模板页面上..所有使用这个模板的页面!!!当页面在浏览器上收费时的问题,它具有模板的属性,在模板上的代码是

<h:form>
    <p:tabMenu activeIndex="0">
        <p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star" />
        <p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench"  />  
        <p:menuitem value="Composants" url="/pagess/pagesComposant/Composant.jsf" icon="ui-icon-search"  />  
        <p:menuitem value="Dossier d'equivalence" url="DEQ.jsf" icon="ui-icon-document"  />  
    </p:tabMenu> 
    </h:form>

它在 0 上显示活动索引,为此我认为所有重定向的页面都没有同步活动索引.. 请问有什么问题吗

4

1 回答 1

0

我认为只能在操作方法中更新组件树。

您可以在动作方法中动态修改组件并同样设置活动索引。

这是 tabMenu 组件 api,供进一步参考。

http://www.primefaces.org/docs/api/3.5/org/primefaces/component/tabmenu/TabMenu.html

public void getFooClientId(int activeIndex) {
    FacesContext context = FacesContext.getCurrentInstance();
    UIViewRoot root = context.getViewRoot();

    final String componentId = "foo";
    UIComponent c = findComponent(root, componentId);
    TabMenu t = (TabMenu)c;
    t.setActiveIndex(activeIndex);


  }

  /**
   * Finds component with the given id
   */
  private UIComponent findComponent(UIComponent c, String id) {
    if (id.equals(c.getId())) {
      return c;
    }
    Iterator<UIComponent> kids = c.getFacetsAndChildren();
    while (kids.hasNext()) {
      UIComponent found = findComponent(kids.next(), id);
      if (found != null) {
        return found;
      }
    }
    return null;
  }
于 2013-04-18T18:28:20.007 回答