我有 Primefaces TabView 和两个选项卡,例如:
<p:tabView dynamic="true" cache="false"
onTabShow="scrollBottom(#{stanzaBean.activeIndex})"
tabChangeListener="#{messaggioBean.onTabChange}"
activeIndex="#{stanzaBean.activeIndex}" >
它工作正常,除了当我更改选项卡时,服务器上的 activeIndex 不会更新并且它始终返回默认值。
我正在使用 primefaces 2.2.1。
谢谢。
正经过PrimeFaces 展示示例 http://www.primefaces.org/showcase/ui/tabviewChangeListener.jsf,如果给每个选项卡一个 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());
}
然后您就会知道选择了哪个选项卡。
Edit:
有一个开放的 PrimeFaces关于你遇到的问题。
Edit 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 可以正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)