Primefaces tabview activeIndex 未在服务器上更新

问题描述

将我的 Web 应用程序移植到更新版本时,我遇到了来自 p:tabView UI 组件的 activeIndex 行为的奇怪故障。简短地说:在我现有的 Web 应用程序中,一切正常,在我的较新版本中,activeIndex 没有在支持 bean 上更新。两个网络应用程序使用相同的代码!还有相同的 java-libraries 和 Primefaces 版本 (8.0)。

xhtml 代码是:

<p:tabView id="TVMR"
    styleClass="menuRight zw-fontFamily zw-green zw-fontnormal"
    dynamic="true" cache="false" orientation="left" 
    widgetvar="tabViewMenuRight"
    style="border: 0px solid black; padding: 0px !important;"
    activeIndex="#{accViewer.tabIndex}">

    <p:tab title="" disabled="true" id="tab0">
    </p:tab>

    <p:tab title="Accommodatie" id="tab1">
    </p:tab>

    <p:tab title="Location" id="tab2">
    </p:tab>

    ......

    <p:ajax event="tabChange" listener="#{accViewer.onChange}"
        update="@this,accomMenuPanel,TVMR,cac010,cac020,cac030,cac040"
        resetValues="true" />
</p:tabView>

java 代码为:

public void setTabIndex(int tabIndex) {
    System.out.println(thisClassName + ": setTabIndex (1) - " + tabIndex);
    this.tabIndex = tabIndex;
}

public void onChange(TabChangeEvent<TabChangeEvent> event) {

    System.out.println(thisClassName + ": onChange (1) - " + event.getTab().getId());

    if (AppUtils.isInteger(event.getTab().getId().substring(3))) {
        int i = Integer.parseInt(event.getTab().getId().substring(3));
        if (this.tabIndex != i) {
            System.out.println(thisClassName + ": onChange (2) - " + i);
            setTabIndex(i);
        }
    }
} 

在我的新网站上,我不得不建立一个变通办法,让一切恢复正常。因此,如果 p:tabView 没有更新自动 tabIndex,它将由 onChange(TabChangeEvent 事件) 更新。在这里您可以看到两个 Web 应用程序的比较结果:

现有的网络应用程序显示

viewer.AccViewer: setTabIndex (1) - 4
viewer.AccViewer: onChange (1) - tab4

新的网络应用程序显示

viewer.AccViewer: setTabIndex (1) - 1
viewer.AccViewer: onChange (1) - tab4
viewer.AccViewer: onChange (2) - 4
viewer.AccViewer: setTabIndex (1) - 4

我的配置是:

Eclipse 18-12;
JDK v11.0;
Apache Tomcat (TomEE)/9.0.41 (8.0.6);
JSF2.3;
myfaces2.3;
Primefaces 8.0;

如果有人可以就可能导致这种意外行为的原因提供提示或解释,我将非常感激!解决这种类型的故障非常耗时,除非我自己犯了一些错误,否则我觉得 Primefaces 框架(我发现它是一个出色的工程 java UI 层!)应该更稳定一些。也许 Primefaces 可以调查一段时间,让 p:tabview tabIndex 服务器更新过程可靠!?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)