可以手动重置 Primefaces 选项卡以强制重新加载吗

Can a Primefaces tab be manually reset to force a reload

我正在使用动态和缓存属性设置为 true 的 Primefaces tabView - 因此,每个选项卡在第一次显示时加载,然后缓存,因此需要重新加载。 有没有办法手动强制重新加载已缓存的选项卡,以便下次显示时再次从服务器而不是从缓存中获取内容?

所以如果我有类似的东西

<p:tabView id="MyTabViewId" widgetVar="_MyTabViewId" dynamic="true" cache="true">
...
</p:tabView>

我可以写一些javascript类似于下面的

PF('_MyTabViewId').invalidate(0);
PF('_MyTabViewId').select(0);

第一个选项卡将从服务器加载,无论它是否在缓存中。

是的,您只需将此脚本添加到您的页面...

if (PrimeFaces.widget.TabView) {
    PrimeFaces.widget.TabView.prototype.reloadTab = function(index) {
        var reloadPanel = this.panelContainer.children().eq(index);
        reloadPanel.data('loaded', false);
        this.select(index);
    }
}

这会向小部件添加一个 reloadPanel 方法,这样您就可以执行此操作 PF('_MyTabViewId').reloadPanel(0);

问题:https://github.com/primefaces/primefaces/issues/8007

公关:https://github.com/primefaces/primefaces/pull/8008

将包含在 PrimeFaces 11.0.0 中