我有一个这样的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事件上添加一个actionlistener,但这也会在点击tab1时触发该方法。如何仅在单击tab2时触发方法?
答案 0 :(得分:11)
单击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
}
}