はおそらく、あなたは間違った瞬間に、間違った作家またはと呼ばれるフラッシュを使用したり(すなわち、動作がブラウザ/ CSS/JS固有のものです)の結果を誤解します。次のテストケースはMojarra 2.1.3で動作します。
public String getText() throws Exception {
FacesContext.getCurrentInstance().getExternalContext().responseFlushBuffer();
Thread.sleep(250);
return "<br />a line of text";
}
と
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
<h:outputText value="#{bean.text}" escape="false" />
あなたは明らかに一度の代わりに、すべての行ずつ表示されるブラウザでそれらを参照してください。
上記の方法は実際にはお勧めできませんのでご注意ください。コンテキスト・パラメータjavax.faces.FACELETS_BUFFER_SIZE
を使用してレスポンス・バッファ・サイズを微調整できます。
<context-param>
<!-- Flush every 128 bytes (default is 1024) -->
<param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>
<param-value>128</param-value>
</context-param>
あなたは正しいです。私は単純なcontext.getResponseWriter().flush()を使っていました。あなたが引用した方法が正しい方法でした。 – Nerrve
まだ別の関連する質問があります。どのようにバッファサイズに関係なく、responseFlushBuffer()メソッドは応答をクリアしようとしているので、BUFFER_SIZEはどのように関係しますか? – Nerrve
バッファがいっぱいになると、自動的にフラッシュされます。したがって、サイズがデフォルトよりも(それほど)小さい場合、自動的にフラッシュされる頻度が高くなります。参照してください。 – BalusC