我有一个页面,我在其中添加动态标签从一个bean TabView并执行一些异步操作。
<h:form id="requestForm">
<p:panel id="requestPanel" header="SQL"
styleClass="noBorder">
<p:remoteCommand name="updateMainForm" process=":requestForm" actionListener="#{tabbedView.update()}" update="#{tabbedView.idsToUpdate}"/>
<p:tabView id="myTabPanel" binding="#{tabbedView.tabview}" />
<f:facet name="actions">
<p:commandButton value="Ajout Onglet" icon="fa faw fa-plus grey" actionListener="#{tabbedView.add}"
process=":requestForm" update="requestForm" async="true"
styleClass="ui-panel-titlebar-icon white secondBtn" />
</f:facet>
</p:panel>
</h:form>
添加标签的Bean方法
@Async
public void add() {
System.out.println("Begin add");
Tab newTab = new Tab();
controllers.add(controller);
newTab.setTitle("Onglet "+tabs.size());
newTab.setId("tab"+tabs.size());
System.out.println("Finish add");
newTab.getChildren().add(createForm(tabs.indexOf(newTab)));
this.tabview.getChildren().add(newTab);
}
使用async = true,每个方法都是异步运行的,每个组件一旦可用就加载,但是只有最后准备好的组件才能运行。所有其他组件都丢失了。 有没有办法来制作这个?