您可以使用 PrimeFaces 的客户端脚本 API。在tabView 中定义widgetVar 属性。然后使用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 展示的源代码。您的代码可能存在一些差异。