<h:panelGroup id="foo">
... (some complex UI here) ...
</h:panelGroup>
<h:form>
<f:websocket channel="someChannel" scope="view">
<f:ajax event="someEvent"
listener="#{bean.pushed}" render=":foo" />
</f:websocket>
</h:form>
|
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
| Назад | Вперёд | Содержание |
Если вы хотите выполнять сложные обновления пользовательского интерфейса в зависимости от полученного push-сообщения, вы можете вложить тег f:ajax в тег f:websocket. Смотрите следующий пример:
<h:panelGroup id="foo">
... (some complex UI here) ...
</h:panelGroup>
<h:form>
<f:websocket channel="someChannel" scope="view">
<f:ajax event="someEvent"
listener="#{bean.pushed}" render=":foo" />
</f:websocket>
</h:form>
Здесь push-сообщение просто представляет имя события ajax. Вы можете использовать любое произвольное имя события.
someChannel.send("someEvent");
Альтернативой является объединение тега f:websocket с тегом h:commandScript. <f:websocket onmessage> в точности ссылается на <h:commandScript name>.
Например:
<h:panelGroup id="foo">
... (some complex UI here) ...
</h:panelGroup>
<f:websocket channel="someChannel" scope="view"
onmessage="pushed" />
<h:form>
<h:commandScript name="pushed"
action="#{bean.pushed}" render=":foo" />
</h:form>
Если вы передадите Map<String, V> или JavaBean в качестве объекта push-сообщения, то все записи или свойства будут прозрачно доступны в качестве параметров запроса в методе сценария #{bean.pushed}.
| Назад | Вперёд | Содержание |
Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)