jsf - primefaces tabView activeIndex 问题

标签 jsf indexing primefaces tabview

我有 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 及更高版本中,tabChangeListenertabView 元素上不再可用,但应通过带有 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/

相关文章:

mysql - 复制包含索引的 MySQL 表

sql - 如何在 SQL Server 中使用左外连接索引 View

javascript - 如何从p :dialog header attribute引用javascript变量

java - 将类移动到另一个包后,Netbeans 无法部署 JSF 应用程序

jsf - 如何启用/禁用 primefaces 命令按钮?

python - 在rtree中,如何指定 float 相等性测试的阈值?

jsf - 如何禁用或启用一组组件

java - Faces Servlet - ClassNotFound 异常

java - Oracle ADF : SkinFactory is not working correctely in JDeveloper 12. 1.3

jsf - 如何更新/渲染<:forEach with ajax