primefaces dataTable不使用tabChangeListener呈现

时间:2014-03-28 09:55:42

标签: java jsf primefaces datatable tabview

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

这是我的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}"/>

这里是userBean.java的一部分

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;
    }

0 个答案:

没有答案