单击关闭选项卡,选项卡无法删除阵列列表

时间:2012-07-27 06:26:49

标签: ajax jsf-2 primefaces

我有一个主要的面部应用程序。它有菜单和标签。当我点击菜单栏上的菜单项时,它会将插入到管理bean中的数组列表中,并在xhtml页面中打开选项卡。当我单击选项卡上的关闭选项卡时,它会删除选项卡的值从数组列表中关闭选项卡。但是当我在任何选项卡中包含页面并且页面具有inputText并且输入文本required = true时,当我关闭页面时,文本字段没有数据时,选项卡数据无法从托管bean中的数组列表中删除。

表示菜单栏和输出标签

<h:form id="menu">                
        <p:menubar autoDisplay="true">
           <p:submenu id="student" label="Student">       
                <p:menuitem id="studentAdmission" value="Student Admission" action="#{ajaxBean.editAction}" ajax="true" update=":outputForm">
                    <f:setPropertyActionListener target="#{ajaxBean.action}" value="StudentAdmission" />
                </p:menuitem>
                <p:menuitem id="studentList" value="Student Profile" action="#{ajaxBean.editAction}" ajax="true" update=":outputForm">
                    <f:setPropertyActionListener target="#{ajaxBean.action}" value="StudentProfile" />
                </p:menuitem>                        
            </p:submenu>
            <p:submenu id="registration" label="Registration">
                <p:menuitem id="registrationAdd" value="Subject Registration" action="#{ajaxBean.editAction}" ajax="true"  update=":outputForm">
                    <f:setPropertyActionListener target="#{ajaxBean.action}" value="SubjectRegistration"/>                                 
                </p:menuitem>
                <p:menuitem id="registrationList" value="List of Registration" action="#{ajaxBean.editAction}" ajax="true" update=":outputForm">
                    <f:setPropertyActionListener target="#{ajaxBean.action}" value="RegistrationList" />
                </p:menuitem>                        
            </p:submenu>
        </p:menubar>
    </h:form>       
    <h:form id="outputForm">
        <p:tabView id="outputTab">
            <p:ajax event="tabClose" listener="#{ajaxBean.closeTab}"/>
            <c:forEach items="#{ajaxBean.chcekItem}" var="item" varStatus="loop">
                <p:tab id="#{item}" title="#{item}" closable="true">                            
                    <ui:include src="#{bundle[item]}"/>   

                </p:tab>
            </c:forEach>
        </p:tabView>
    </h:form>

这里有人帮助我。

1 个答案:

答案 0 :(得分:1)

在我使用的问题

 <p:ajax event="tabClose" listener="#{ajaxBean.closeTab}"/>

关闭标签

我发现的解决方案是

<p:ajax event="tabClose" immediate="true" listener="#{ajaxBean.closeTab}"/>

这意味着,如果我们想以任何方式关闭标签并希望将tabClose action发送到managedbean,那么我们必须使用immediate="true"