обновить выходной текст из класса - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть проект RichFaces на JSF 2.2, и я хотел показать обновления статуса и сообщения пользователю при обработке их запроса. Я хотел использовать a4j:outputpanel с простым выводом для этого. Я добавил строку system.out, и она появляется на моей консоли сервера, но текст на экране не обновляется.

В моем классе процесса:

private void showAdvise(final String message) {
   System.out.println(">>>>>ComUI showAdvise: " + message);
   this.beidCardStatusBean.updateStatus(message);
}

На моей странице jsf : - Я запускаю процесс с:

 <a style="font-size:150%;" onclick="startEID();" 
href="savePhoto.do?userId=#{detailUserBean.id}">#{UIMessages['button.loadPhoto']}</a>

<a:outputPanel id="eidPaneContainer" ajaxRendered="true">
  <rich:popupPanel header="EID" id="eidPane" width="100" height="80">
    <h:outputText id="eidStatus" value="#{beidCardStatusBean.getStatus()}" >
    </h:outputText>
  </rich:popupPanel>
</a:outputPanel>

1 Ответ

0 голосов
/ 23 апреля 2020

Чтобы обновить компоненты, страница должна отправить запрос на сервер, это не происходит автоматически, когда что-то на сервере изменяется. Простое решение - использовать опрос, например,

<a4j:poll id="poll" interval="2000" enabled="#{bean.pollEnabled}" render="poll, popup" />

. Это будет повторять всплывающее окно каждые 2 секунды. Так что в вашем случае startEID необходимо установить pollEnabled и повторно запустить опрос, чтобы начать его.

PopupPanel может быть немного проблематичным c, когда дело доходит до рендеринга, попробуйте установить domElementAttachment="parent", если это не работает.

...