检查p:tabView中访问过的标签。 onTabShow事件的用法?

时间:2013-10-18 10:25:24

标签: jsf-2 primefaces

我正在尝试在控制器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绑定也许吧?但是如何?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用<p:ajax/>而无需指定event。话虽这么说,你可以通过

获得当前选择的标签
  1. activeIndex上的<p:tabView/>属性绑定到支持bean属性

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

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

  2. 中使用它
  3. 使用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}"/>