我正在尝试在控制器bean中跟踪,已经访问了 p:tabView 的哪些选项卡(通过tab-id)。 我出于某些原因不想使用 onTabChange 事件(已经阻止了其他事情)。 所以我尝试使用 p:tabView 的 onTabShow 事件来实现我的用例。但还没有成功。我首先尝试使用p:ajax listener:
<p:tabView>
<p:ajax event="tabShow" listener="#{myBean.checkTab(event)}" .../>
结果是错误消息:p:ajax中不支持 tabShow ...
第二次尝试使用 remoteCommand :
<p:tabView onTabShow="myCommand()">
...
<p:remoteCommand name="myCommand" actionListener="#{myBean.checkTab}" .../>
但是如何将事件作为参数传递给我的bean方法来从中获取tab-object?
有人可以提供帮助,或者知道如何跟踪我的bean中访问过的标签? 用tabView绑定也许吧?但是如何?
谢谢!
答案 0 :(得分:0)
您可以使用<p:ajax/>
而无需指定event
。话虽这么说,你可以通过
将activeIndex
上的<p:tabView/>
属性绑定到支持bean属性
<p:tabView activeIndex="#{bean.selectedTabIndex}">
<p:ajax listener="#{myBean.checkTab}" .../>
</p:tabView>
使用此变量绑定,您可以在checkTab
。
使用AjaxBehaviorEvent
对象访问所选的特定选项卡:
public void checkTab(AjaxBehaviorEvent abe){
TabView tb = (TabView) abe.getComponent();
List<Tab> loadedTabs = tb.getLoadedTabs();
Tab theTab = loadedTabs.get(tb.getActiveIndex());
}
并在您看来:
<p:tabView>
<p:ajax listener="#{myBean.checkTab}"/>