Rob*_*tis 7 indexing jsf primefaces tabview
我有两个Tab的Primefaces TabView:
<p:tabView dynamic="true" cache="false"
onTabShow="scrollBottom(#{stanzaBean.activeIndex})"
tabChangeListener="#{messaggioBean.onTabChange}"
activeIndex="#{stanzaBean.activeIndex}" >
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我更改Tab时,activeIndex不会在服务器上更新,它总是返回默认值.我正在使用primefaces 2.2.1.
谢谢.
Mar*_*ark 11
通过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>
Run Code Online (Sandbox Code Playgroud)
您可以在tabChangeListener中获取该选项卡ID.
public void onTabChange(TabChangeEvent event) {
System.out.println("tab id = " + event.getTab().getId());
}
Run Code Online (Sandbox Code Playgroud)
然后你就会知道选择了哪个标签.
编辑:
有一个开放的PrimeFaces 问题1640 TabView:TabChangeListener中的activeIndex错误,对你遇到的问题总是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}"/>
Run Code Online (Sandbox Code Playgroud)
您也可以直接获取选项卡的索引:
public void onTabChange(TabChangeEvent event) {
activeIndex = ((TabView) event.getSource()).getIndex();
}
Run Code Online (Sandbox Code Playgroud)
通过所有这些更改,activeIndex正常工作.
小智 6
这为我工作:
public void onTabChange(TabChangeEvent event) {
Tab activeTab = event.getTab();
tabPanelIndex = ((TabView)event.getSource()).getChildren().indexOf(activeTab);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26753 次 |
| 最近记录: |