我有一个素数面应用程序。它有菜单和选项卡。当我点击菜单栏上的菜单项时,它会在manage-bean中的数组列表中插入一个值,并在xhtml页面中打开选项卡。而当我点击选项卡上的关闭选项卡时,它从数组列表中删除选项卡的值并关闭选项卡。但是,当我在任何选项卡中包含一个页面,并且该页面具有inputText,并且inputtextrequired=true时,当我关闭该页面,并且此时文本字段没有数据时,选项卡数据无法从托管bean中的数组List中删除。
用于菜单栏和输出选项卡
<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>
这里的任何人都可以帮助我。
在这个问题中,我使用
<p:ajax event="tabClose" listener="#{ajaxBean.closeTab}"/>
用于关闭选项卡
我发现的解决方案是
<p:ajax event="tabClose" immediate="true" listener="#{ajaxBean.closeTab}"/>
这意味着,如果我们想以任何方式关闭选项卡,并想将tabClose
action
发送到managedbean
,那么我们必须使用immediate="true"