JSF/PrimeFaces : Navigate from one tab to another

标签 jsf primefaces tabview

使用 Primefaces 选项卡 View ( <p:tabView> ),如何从一个选项卡导航到另一个选项卡?

例如:

<p:tabView id="tabPanel">
  <p:tab id="tab1">
       <p>Tab 1</p>
       <a href="#">Go to tab2</a2>
  </p:tab>
   <p:tab id="tab2">
       <p>Tab 2</p>
  </p:tab>   
</p:tabView>

最佳答案

您可以使用 PrimeFaces 的客户端脚本 API。定义 widgetVar tabView 中的属性。然后使用select(index)客户端 API。

<p:tabView id="tabPanel" widgetVar="tabPanelWidget">
  <p:tab id="tab1">
       <p>Tab 1</p>
       <a href="#" onclick="changeTab(1);">Go to Tab2</a2>
  </p:tab>
   <p:tab id="tab2">
       <p>Tab 2</p>
  </p:tab>   
</p:tabView>

注意JS函数的参数。 tab 的索引(从零开始)被传递给 Javascript。

这是客户端代码

function changeTab(index)
{
    tabPanelWidget.select(index);
}

带有动态内容的tabView

此外,如果您有动态内容,您可以在用户单击选项卡时模拟客户端 API。

我深入研究了该组件的源代码。 tabview 组件由 div 和无序列表项组成,其中包含 <a>要点击的标签。然后我选择<a>页面中的标签并使用 jquery 单击。

查看我的 jquery 代码:

function changeTab(tabId)
    {
       $('#formId\\:tabPanel ul li a[href="#form:tabPanel:"+tabId+"]').click();
}

这是选择器的详细信息。

#formId\:tabPanel : formId是页面的 id。如果prependId="false"用过这部分可以跳过。 \\: 的转义符tabPanel 是 tabview 的 id。

ul li :是代表选项卡的无序列表项。

a[href="#form:tabPanel:"+tabId+"]' : <a> href 属性等于 tabId 的标签。

此外,我检查了 PrimeFaces 展示的源代码。您的代码可能存在一些差异。

关于JSF/PrimeFaces : Navigate from one tab to another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20350475/

相关文章:

JSF 动态地将 src 包含在 "ui:include src="#{bean.pagePath} 中”

jsf - p :panel and p:fieldset issue with collapsed state when using ajax/update

java - p :tabMenu without form

swiftui - TabView tabItem 图像移至顶部

jsf-2 - 是否可以在一个 Web 应用程序中组合 Primefaces 和 Richfaces?

css - 如何覆盖 PrimeFaces CSS 来自定义我的按钮?

swift - 在 SwiftUI 中使用 TabView 时,NavigationView 无法正确显示

java - 使用分页和 requestscope 时数据表中的数据消失

java - RichFaces:使用两个 modalPanel

java - JSF2 - 为什么渲染响应不重新渲染组件设置?