我正在做一些测试,我意识到编写器没有自动刷新,即在所有组件都被渲染之前我在客户端看不到任何响应?
我也尝试手动刷新响应编写器,但它没有任何区别。有没有办法允许手动刷新,以便更早地为客户端提供响应?
由于
答案 0 :(得分:3)
也许您在错误的时刻使用了错误的编写器或调用了flush,或者误解了结果(即行为是浏览器/ CSS / JS特定的)。以下测试用例适用于Mojarra 2.1.3。
<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" />
与
public String getText() throws Exception {
FacesContext.getCurrentInstance().getExternalContext().responseFlushBuffer();
Thread.sleep(250);
return "<br />a line of text";
}
您可以在浏览器中看到它们一行一行而不是一次性显示。
请注意,我们并不建议采用上述方法。您可以使用上下文参数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>