【发布时间】:2015-04-04 12:50:24
【问题描述】:
一旦 xhtml 页面 (primefaces) 上的选项卡在提交值后关闭,我重新打开一个新选项卡,该选项卡选择相同的 bean,旧值仍然存在。我想用默认值打开一个新选项卡(支持 bean 的新实例)。
XHTML 页面
<h:form>
<p:layout style="min-width:400px;min-height:700px" >
<p:layoutUnit position="west" style="min-width:200px;min-height:50px">
<ui:include src="Menu.xhtml" />
</p:layoutUnit>
<p:layoutUnit position="center" >
<p style="text-align:center">Welcome</p>
<p:tabView dynamic="false" widgetVar="tabView">
<p:ajax event="tabClose" listener="#{requestCalculation.onTabClosed}"/>
<c:forEach items="#{requestCalculation.formTabs}" var="listItem">
<p:tab title="#{listItem.formTitle}" closable="true" >
<ui:include src="#{listItem.formPage}" />
</p:tab>
</c:forEach>
</p:tabView>
<h:panelGrid columns="2">
<h:commandButton value="Calculate" action = "#{requestCalculation.calculate}"/>
<h:commandButton value="Reset" action = "#{requestCalculation.resetPage}"/>
</h:panelGrid>
</p:layoutUnit>
</p:layout>
</h:form>
支持 Bean
public String loadForm(TcsBase loadForm){
id = loadForm.getId();
ViewTabs tab = new ViewTabs();
tab.setFormTitle("Form".concat(id));
tab.setFormPage("Form".concat(id).concat(".xhtml"));
formTabs.add(tab);
calcReq.getFormCollection().add(loadForm);
System.out.println(loadForm.getId());
return "Main";
}
public void onTabClosed(TabCloseEvent e){
TabView tabView = (TabView) e.getComponent();
int closingTabIndex = tabView.getChildren().indexOf(e.getTab());
removeForm(closingTabIndex);
}
public void removeForm(int index){
calcReq.getFormCollection().remove(index);
formTabs.remove(index);
}
【问题讨论】:
-
然后重置你的backingbean中的值/从你的backingbean
-
你的backing bean的范围是什么?
标签: jsf-2 primefaces scope managed-bean browser-tab