选择特定的Primefaces p:tab时如何执行javascript函数

选择特定的Primefaces p:tab时如何执行javascript函数,javascript,primefaces,Javascript,Primefaces,当p:tabView中的p:tab被选中时,我需要执行一个javascript函数。我不需要任何后端方法,只需要执行一个简单的javascript函数。我已经尝试过在p:tab标签中添加“onclick”,但这不起作用 我总是可以执行后端bean方法,并使用requestContext.execute()在那里执行javascript,但看起来有些奇怪 谢谢正如@Kukeltje所说,您可以通过客户端的widgetVar属性访问PrimefacestabView组件。可以通过javascript

当p:tabView中的p:tab被选中时,我需要执行一个javascript函数。我不需要任何后端方法,只需要执行一个简单的javascript函数。我已经尝试过在p:tab标签中添加“onclick”,但这不起作用

我总是可以执行后端bean方法,并使用requestContext.execute()在那里执行javascript,但看起来有些奇怪


谢谢

正如@Kukeltje所说,您可以通过客户端的
widgetVar
属性访问Primefaces
tabView
组件。可以通过javascript调用
PF('yourWidgetVar')
(从5.x版开始)或简单地调用
yourWidgetVar
(4.x版及之前的版本,请参阅)来访问它

Primefaces用户指南()中介绍了客户端小部件API客户端回调

使用客户端API的示例

有一个名为
getActiveIndex()
的客户端函数,它返回当前活动选项卡的索引(计数从
0
开始)。 在本例中,
警报
仅显示在第二个选项卡上:

<h:form>
    <p:tabView widgetVar="varTabView">
        <p:ajax event="tabChange" oncomplete="if (PF('varTabView').getActiveIndex() == 1) alert ('the 2nd tab');" />
        <p:tab title="Tab1" id="tab1">
            <h:outputText value="Tab1 content"/>
        </p:tab>
        <p:tab title="Tab2" id="tab2">
            <h:outputText value="Tab2 content"/>
        </p:tab>
    </p:tabView>
</h:form>
第页:


正如@Kukeltje所说,您可以通过客户端的
widgetVar
属性访问Primefaces
tabView
组件。可以通过javascript调用
PF('yourWidgetVar')
(从5.x版开始)或简单地调用
yourWidgetVar
(4.x版及之前的版本,请参阅)来访问它

Primefaces用户指南()中介绍了客户端小部件API客户端回调

使用客户端API的示例

有一个名为
getActiveIndex()
的客户端函数,它返回当前活动选项卡的索引(计数从
0
开始)。 在本例中,
警报
仅显示在第二个选项卡上:

<h:form>
    <p:tabView widgetVar="varTabView">
        <p:ajax event="tabChange" oncomplete="if (PF('varTabView').getActiveIndex() == 1) alert ('the 2nd tab');" />
        <p:tab title="Tab1" id="tab1">
            <h:outputText value="Tab1 content"/>
        </p:tab>
        <p:tab title="Tab2" id="tab2">
            <h:outputText value="Tab2 content"/>
        </p:tab>
    </p:tabView>
</h:form>
第页:



尝试
控制台.log(事件)
,或
控制台.log(此)
并检查浏览器开发人员工具提供的所有功能。如果您根本不需要调用服务器端方法,那么您可以始终使用from PrimeFaces扩展,还可以检查客户端api,
tabWidget.getActiveIndex()
(假设tabView的widgetVar为'tabWidget
),并且向后兼容性已启用,否则它将为
PF('tabWidget')。getActiveIndex()`尝试
console.log(事件)
,或
console.log(此)
并检查浏览器开发人员工具提供的所有功能。如果您根本不需要调用服务器端方法,那么您可以始终使用from PrimeFaces扩展,还可以检查客户端api,
tabWidget.getActiveIndex()
(假设tabView的widgetVar为'tabWidget
),并且向后兼容性已启用,否则它将为
PF('tabWidget')。getActiveIndex()`
<h:form>
    <p:tabView onTabChange="handleTabChange(index)">
        <p:tab title="Tab1">
            <h:outputText value="Tab1 content"/>
        </p:tab>
        <p:tab title="Tab2">
            <h:outputText value="Tab2 content"/>
        </p:tab>
    </p:tabView>
</h:form>