2013-07-22 81 views
0

動態創建標籤p:tabView無法正常關閉。 當我點擊標籤打勾關閉選定的選項卡。始終關閉第一個標籤頁,而不是當前點擊標籤頁。 我想要的是,關閉被點擊的標籤。這裏只關閉第一個選項卡,而不是點擊選項卡。primefaces p:tabView動態標籤沒有正確關閉

我的JSF:

::::::::::: 
<h:form prependId="false" id="form"> 

    <p:tabView value="#{deneBean.tabs}" var="tab" id="myTabView" binding="#{deneBean.tabView}"> 
    <p:ajax event="tabClose" listener="#{deneBean.closeme(tab)}" update="@form"/> 
    <p:tab title="#{tab.title}" closable="true" > 
     #{tab.content} 
    </p:tab> 
    </p:tabView> 
    <p:commandButton value="Add Tab" action="#{deneBean.add}" update="@form" /> 

</h:form> 
::::::::::::::::::::::: 

我的JSF豆:

@ManagedBean 
@ViewScoped 
public class DeneBean implements Serializable { 

    public DeneBean() { 
    } 
    private List<NeuTab> tabs; 

    @PostConstruct 
    public void init() { 
     tabs = new ArrayList<NeuTab>(); 
    } 

    public void add() { 
    tabs.add(new NeuTab("tab" + tabs.size(), "some content")); 
    } 

    public void remove(NeuTab tab) { 
    tabs.remove(tab); 
    } 

    public List<NeuTab> getTabs() { 
    return tabs; 
    } 

    public boolean closeme(NeuTab tab) { 

    for (int i = 0; i < tabs.size(); i++) { 
     NeuTab neuTab = tabs.get(i); 
     System.out.println(i + ".list:" + neuTab.getTitle()); 
    } 
    tabs.remove(tab); 
    return true; 
    } 

    TabView tabView = new TabView(); 

    public TabView getTabView() { 
    return tabView; 
    } 

    public void setTabView(TabView tabView) { 
    this.tabView = tabView; 
    } 
    ::::::::::::::::::: 

我的班級NeuTab:

public class NeuTab { 
     private String title; 
     private String content; 

     public NeuTab(String title, String content) { 
      this.title = title; 
      this.content = content; 
     } 

     public String getTitle() { 
      return title; 
     } 

     public String getContent() { 
      return content; 
     } 
    } 

回答

0

嘗試使用TabClos​​eEvent。

在你的bean:

import org.primefaces.event.TabCloseEvent; 

public void closeme(TabCloseEvent event) {  
    tabs.remove(event.getTab()); 
} 

在XHTML:

<p:ajax event="tabClose" listener="#{deneBean.closeme}" update="@form" /> 

另見:

TabView - Closeable