【问题标题】:How to switch p:tab in the same form using a command button如何使用命令按钮以相同的形式切换 p:tab
【发布时间】:2025-12-20 15:55:12
【问题描述】:

如何使用命令按钮切换到选项卡 (<p:tab>)?

【问题讨论】:

    标签: jsf primefaces tabview


    【解决方案1】:

    还有一个客户端api方法叫selectTab(index);

    <p:commandButton type="button" onclick="widgetvar.selectTab(2)" value="Show" />
    

    【讨论】:

    • 匿名用户编辑您的帖子(被拒绝)。但我认为编辑值得作为评论添加:Actually selectTab is depreciated..use select() instead
    【解决方案2】:

    p:tabView 有一个属性 activeIndex,即“活动标签的索引”(Primefaces 文档)。

    您可以通过p:commandButton 的操作方法设置此属性:

    <p:commandButton value="Switch tab" action=#{myBean.switchTab} />
    

    在您的支持 bean 中定义一个操作方法 switchTab() 并让它设置一个成员 activeTab

    然后使用此成员设置您的活动标签

    <p:tabView activeIndex=#{myBean.activeTab}>
    

    如果您的服务器支持 EL 2.2,您可以使用 action 方法调用来设置活动选项卡的索引:

    <p:commandButton value="Switch tab" action=#{myBean.switchTab(2)} />
    

    然后您可以使用您的操作方法调用的参数直接设置活动索引。

    【讨论】:

      【解决方案3】:

      我使用 Primefaces 5.1,我所做的是在 ManagedBean 中绑定我的 tabView 并在那里设置 activeIndex

      在你的 JSF 中

      <h:form prependId="false" id="form">
          <p:tabView id="tabPanel" widgetVar="tabPanel" binding="#{managedBean.tabView}" dynamic="true">
              <p:tab title="tab" >
              <p:commandButton action="#{managedBean.getBla}"
                    icon="ui-icon-search" update=":form:tabPanel" immediate="true" >
                    ...  
      

      在您的 ManagedBean 中

      private TabView tabView;
      public TabView getTabView() {
          return tabView;
      }
      
      public void setTabView(TabView tabView) {
        this.tabView = tabView;
      

      }

      然后在您在 commandButton 操作中调用的方法中,您只需执行 tabView.setActiveIndex(1);

      希望它有效:)

      【讨论】:

        【解决方案4】:

        使用命令按钮以相同的形式切换 p:tab 只有在客户端,您才能使用 widgetVar 来选择/查看选项卡,如下所示:

        注意:第一个选项卡的 tabIndex 将从 0 开始。

        <p:commandButton type="button" onclick="PF('tabWidgetVar').select(1)" value="Next" />
        

        在服务器端,你可以将一个整数变量与 p:tab 的 activeIndex 属性绑定,然后执行方法来设置索引。

        【讨论】:

        • 为什么多年后又添加了重复的答案?
        最近更新 更多