Переносы p: tabView динамические вкладки не закрываются должным образом

0 murat [2013-07-22 14:12:00]

динамически создаваемые вкладки с праймерами 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 Bean:

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

jsf primefaces


1 ответ


0 Emil Kaminski [2013-07-23 09:40:00]

Попробуйте использовать TabCloseEvent.

В вашей фасоли:

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 - закрываемый