使用 Javascript 防止在 p:tabView 中关闭选项卡

Prevent closing tab in p:tabView using Javascript

我需要防止在 tabView primefaces 中关闭选项卡,我知道我可以使用

onTabClose="return false;"

问题是我不想关闭选项卡,但我想在单击关闭时执行操作。当我使用 onTabClose="return false;" 时,不会调用 <p:ajax event="tabClose" listener="#{bean.onTabClose}" update=":growls:mainGrowls"/>

如何防止选项卡在交叉单击和从 bean 调用函数时关闭?

我可以用这种方法阻止关闭吗?

public void onTabClose(TabCloseEvent event) {       
    FacesMessage msg = new FacesMessage("Tab Closed", "Closed tab: " + event.getTab().getId());
    FacesContext.getCurrentInstance().addMessage(null, msg);
}

标签视图:

<p:tabView id="tabView" activeIndex="0" style="height: 100%;" onTabClose="return false;">
            <p:ajax event="tabClose" listener="#{bean.onTabClose}" update=":growls:mainGrowls"/>
            <p:tab title="#{tabTitle}" closable="false" >
                <div style="height: 100%; background: #efefef !important">
                    <ui:insert name="tab" />
                </div>
            </p:tab>
            <p:tab title="" closable="true" id="">

            </p:tab>
        </p:tabView>

如果你想在托管 bean 中调用一个方法,你可以创建一个 p:remoteCommand:

<p:remoteCommand name="yourRemoteCommand"
                 actionListener="#{yourBean.yourMethod}" />

这允许您在 Javascript 中使用 yourRemoteCommand(),因此您可以使用:

onTabClose="yourRemoteCommand(); return false;"

如果需要给远程命令发送参数,见:

  • Pass parameter to p:remoteCommand from JavaScript