Java 未使用tabChangeListener呈现primefaces数据表

Java 未使用tabChangeListener呈现primefaces数据表,java,jsf,primefaces,datatable,tabview,Java,Jsf,Primefaces,Datatable,Tabview,我有tabView,它包括两个选项卡和两个数据表。当选择第一个选项卡时,将显示第一个数据表,选择第二个选项卡,然后显示第二个数据表。但是我的datatable无法看到呈现的更改 这是我的xhtml <p:tabView id="tabViewKullanici" dynamic="true"> <p:ajax event="tabChange" listener="#{userBean.onTabChange}" update=":userForm:userDataTab

我有tabView,它包括两个选项卡和两个数据表。当选择第一个选项卡时,将显示第一个数据表,选择第二个选项卡,然后显示第二个数据表。但是我的datatable无法看到呈现的更改

这是我的xhtml

<p:tabView id="tabViewKullanici" dynamic="true">  
<p:ajax  event="tabChange" listener="#{userBean.onTabChange}" update=":userForm:userDataTable,:userForm:userDataTable2"/>  

<p:tab title="#{etiketler.userinfo1}" id="userinfoList1"  > 
</p:tab>

<p:tab title="#{etiketler.userinfo2}" id="userInfoList2">
</p:tab>
</p:tabView>

 <p:dataTable id="userDataTable" rendered="#{userBean.tabIndex eq 1}"/>
<p:dataTable id="userDataTable2" rendered="#{userBean.tabIndex eq 2}"/>

Ajax渲染不是那样工作的。如果datatable是以
rendered=“false”
开头的,您尝试重新渲染它的方式将永远不会显示它。您应该在ajax监听器中执行
update=“tabViewKullanici”
,谢谢您的回复。我在userBean.java中定义了布尔tabIndex。我的XHTML页面是一样的,然后它成功地工作了。
private int tabIndex;

@PostConstruct
    public void init() { tabIndex = 1; }

 public void onTabChange(TabChangeEvent event) {  
        FacesMessage msg = new FacesMessage("Tab Changed");  
        System.out.println("event.getTab().getId(): " + event.getTab().getId());
        System.out.println("event.getTab().getTitle(): " + event.getTab().getTitle());
        if((event.getTab().getId()).equals("userinfoList1") ){

            tabIndex = 1;
       }
        if((event.getTab().getId()).equals("userinfoList2") ){

            tabIndex = 2;
      }

        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }

   public int getTabIndex() {
        return tabIndex;
    }

    public void setTabIndex(int tabIndex) {
        this.tabIndex = tabIndex;
    }