0

我正在尝试在控制器 bean 中跟踪p:tabView的哪些选项卡已被访问(通过选项卡 ID)。由于某些原因,我不想使用onTabChange事件(已因其他原因被阻止)。所以我试图用p:tabView的onTabShow事件来实现我的用例。但是还没有成功。我首先尝试使用 p:ajax 监听器:

<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 方法以从中获取选项卡对象?

有人可以提供帮助或有其他想法我可以如何跟踪我的 bean 中访问的标签吗?也许与 tabView 绑定?但是怎么做?

谢谢!

4

1 回答 1

0

您可以使用<p:ajax/>而不指定event。话虽如此,您可以通过以下方式获取当前选择的选项卡

  1. activeIndex将上的属性绑定<p:tabView/>到支持 bean 属性

    <p:tabView activeIndex="#{bean.selectedTabIndex}">
          <p:ajax listener="#{myBean.checkTab}" .../>
     </p:tabView>
    

    使用此变量绑定,您可以在checkTab.

  2. 使用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}"/>
    
于 2013-10-20T15:29:17.517 回答