通过PrimeFaces ShowCase 示例,如果您给每个选项卡一个 id:
<p:tabView tabChangeListener="#{indexBean.onTabChange}" >
<p:tab title="tab 0" id="tab0"></p:tab>
<p:tab title="tab 1" id="tab1" ></p:tab>
<p:tab title="tab 2" id="tab2"></p:tab>
</p:tabView>
您可以在 tabChangeListener 中获取该选项卡 ID。
public void onTabChange(TabChangeEvent event) {
System.out.println("tab id = " + event.getTab().getId());
}
然后你就会知道选择了哪个选项卡。
编辑:
有一个开放的 PrimeFaces问题 1640 TabView: Wrong activeIndex in TabChangeListener,在您遇到的问题上始终为 0。
编辑2:
对于 PrimeFaces 5.0 及更高tabChangeListener
版本,该元素不再可用,tabView
但应通过带有 tabChange 事件的显式 ajax 标记使用。
<p:tabView id="analysisSections" value="#{analysisBean.analysis.sections}" var="section" activeIndex="#{analysisBean.activeIndex}">
<p:ajax event="tabChange" listener="#{analysisBean.onTabChange}"/>
您也可以直接获取选项卡的索引:
public void onTabChange(TabChangeEvent event) {
activeIndex = ((TabView) event.getSource()).getIndex();
}
通过所有这些更改,activeIndex 可以正常工作。