<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}
.
Назад | Вперёд | Содержание |