Переносы 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" />
Также см: