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

时间:2018-02-15 14:22:33

标签: ajax jsf primefaces tabs tabview

我需要阻止tabView primefaces中的tab关闭,我知道我可以使用

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);
}

TabView的:

<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>

1 个答案:

答案 0 :(得分:1)

如果要在托管bean中调用方法,可以创建p:remoteCommand

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

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

onTabClose="yourRemoteCommand(); return false;"

如果需要将参数发送到远程命令,请参阅: