Primefaces の poll コンポーネントを使い始めました。目標: プログレス バーとして機能する confirmDialog ウィンドウを更新します。xhtml:
<h:form id="pbForm" prependId="false">
<p:confirmDialog id ="progressBar" message= ""
header="Retrieving information..."
widgetVar="pbar"
severity="info">
<h:outputText id="PBlaunch" value="#{pBLaunchSearch.getLaius()}"/>
<p:poll interval="1" update="PBlaunch" />
</p:confirmDialog>
</h:form>
プログレスバーの私のBean:
@ManagedBean
@RequestScoped
public class PBLaunchSearch {
private static StringBuilder sb = new StringBuilder();
public static void setLaius(String toAdd) {
sb.append(toAdd);
sb.append("<br>");
}
public static String getLaius() {
return sb.toString();
}
public static void resetLaius() {
sb = new StringBuilder();
}
}
バックグラウンドで時間がかかる操作は、いくつかの API 呼び出しです。API 呼び出しが終了するたびに、次のコマンドを実行します。
PBLaunchSearch.setLaius("another API call returned");
問題: すべての API 呼び出しが行われるまで、confirmDialog は空のまま (outputText id="PBlaunch" は空のまま) になり、その時点ですべてのメッセージが一度に表示されます (しかし遅すぎます...)。
理由の手がかりはありますか?