Primefaces Tabclose событие получает нулевую вкладку в слушателе - PullRequest
0 голосов
/ 24 февраля 2019

Я создаю динамические вкладки, нажимая кнопку Новая вкладка.Это странная проблема.Я сгенерировал 3 вкладки, когда закрывал первую вкладку, мы получили закрытую вкладку, но когда я закрыл вторую вкладку, мы получили нулевую вкладку.

Вот пример кода

Xhtml Page:

<h:form>
    <p:commandButton id="cmdbutton" value="NewTab"
        actionListener="#{bean.buttonListener}" update=":tabView"></p:commandButton>
</h:form>
<p:tabView id="tabView" dynamic="true" cache="false"
    widgetVar="tabViewVar">

    <p:ajax event="tabClose" listener="#{bean.onTabClose}"
        partialSubmit="true" />

    <p:tab title="Godfather Part I">
        <h:form>
            <p:commandButton id="cmdbutton12" value="button" update=":tabView"></p:commandButton>
            <h:panelGrid columns="2" cellpadding="10">
                <h:outputText value="The story begins as Don Vito Corleone..." />
            </h:panelGrid>
        </h:form>
    </p:tab>
    <c:forEach items="#{bean.dynamicTab}" var="tab">
        <p:tab id="#{tab.id}" binding="#{tab}"></p:tab>
    </c:forEach>
</p:tabView>

Боб:

    public class Bean implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Tab> dynamicTab = new ArrayList<Tab>();


    public List<Tab> getDynamicTab() {
        return dynamicTab;
    }
    public void setDynamicTab(List<Tab> dynamicTab) {
        this.dynamicTab = dynamicTab;
    }
    public Bean() {
        super();
    }


    public void buttonListener(ActionEvent a){
        HtmlForm f=new HtmlForm();
        Tab tempTab = new Tab();
        String id="abc"+UUID.randomUUID().toString();
        tempTab.setId(id);
        tempTab.setTitle(id);
        tempTab.setClosable(true);
        tempTab.getChildren().add(f);
        dynamicTab.add(tempTab);
    }

    public void onTabClose(TabCloseEvent event) {
        Tab tab = event.getTab();
        dynamicTab.remove(tab);

    }
    }
...