JSF 2 - Значение ResponseWriter.flush () - PullRequest
2 голосов
/ 31 октября 2011

Я проводил некоторое тестирование и понял, что писатель не сбрасывается автоматически, т.е. я не вижу ответа на стороне клиента, пока все компоненты не будут отрисованы?автор ответов, но это не имело никакого значения.Есть ли способ разрешить ручную очистку, чтобы ответ стал доступен клиенту раньше?

Спасибо

1 Ответ

3 голосов
/ 31 октября 2011

Возможно, вы использовали не того автора или вызвали 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>
...