我有 Primefaces TabView 和两个选项卡,例如:
<p:tabView dynamic="true" cache="false"
onTabShow="scrollBottom(#{stanzaBean.activeIndex})"
tabChangeListener="#{messaggioBean.onTabChange}"
activeIndex="#{stanzaBean.activeIndex}" >
它工作正常,除了当我更改选项卡时,服务器上的 activeIndex 不会更新,并且它始终返回默认值。 我正在使用 primefaces 2.2.1。
谢谢。
最佳答案
按照 PrimeFaces ShowCase example 进行操作,如果给每个选项卡一个 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 issue 1640 TabView: Wrong activeIndex in TabChangeListener, always 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 可以正常工作。
关于jsf - primefaces tabView activeIndex 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5222819/