8

我有一个这样的 primefaces 选项卡视图:

<p:tabView id="tabView">  
    <p:tab id="tab1" title="Godfather Part I">  
        This tab has static content.
    </p:tab>  

    <p:tab id="tab2" title="Godfather Part II">  
        this tab has a datatable whose  
    </p:tab>  
</p:tabView>

现在,我想要做的是,当用户点击 tab2 时触发一个 managedbean 方法。我可以在 tabView 的 tabchange 事件上添加一个动作监听器,但这也会在点击 tab1 时触发该方法。如何仅在单击 tab2 时触发方法?

4

1 回答 1

15

点击 tabView 的每个选项卡时将调用动作侦听器。但是你可以通过像这样的条件块来控制你的动作监听器。这是一个例子:

<p:tabView id="tabView" dynamic="true">

    <p:ajax event="tabChange" listener="#{Bean.onTabChange}" update=":messages" />
    <p:tab id="tab1" title="#{userLbl['notification.headerIncoming']}">
    <p:tab id="tab2" title="#{userLbl['notification.headerOutgoing']}">
</p:tabView>

动作监听器:

public void onTabChange(TabChangeEvent event) {

   if (event.getTab().getId().equals("tab1")) {
       //Your actions for tab1
   } else if((event.getTab().getId().equals("tab2")) {
     //Your actions for tab2
   }
}
于 2013-07-19T04:33:56.630 回答