f: веб-сокет в JSF 2.3

Я пытаюсь получить пример BalusC JSF 2.3+ (Как сервер может отправлять асинхронные изменения на HTML-страницу, созданную JSF?), работающую с использованием JBoss WildFly 12.0.0.Final

Я добавил JBoss JSF JAR:

jboss-jsf-api_2.3_spec-2.3.3.SP1.jar

Однако, когда я пытаюсь отобразить свою страницу XHTML, которая имеет:

<h:form>
    <f:websocket channel="push">
        <f:ajax event="updateNotifications" render=":panelGridSelect" />
    </f:websocket>
</h:form>

Я получил:

javax.faces.view.facelets.TagException: /enterProduct.xhtml @61,45 Библиотека тегов поддерживает пространство имен: http://xmlns.jcp.org/jsf/core, но для имени не определен тег: websocket

В IntelliJ IDEA:

f:websocket

отображается красным цветом, как будто он не может его найти?

Где taglib для f: websocket?


person NOTiFY    schedule 16.04.2018    source источник
comment
Я добавил JBoss JSF JAR: Где вы его добавили? Сам Wildfly 12 уже поставляется с этим: mvnrepository.com/artifact/ org.wildfly/wildfly-jsf/12.0.0.Final   -  person Kukeltje    schedule 16.04.2018
comment
Я добавил в свою библиотеку IntelliJ, пытаясь избавиться от выделенного красным цветом: ‹f:websocket› и ошибки, отображаемой при наведении курсора на него: не удается разрешить символ f:websocket. Не включайте в мой EAR, как вы правильно говорите, это в модуле WildFly 12.0.0.Final javax.faces   -  person NOTiFY    schedule 16.04.2018
comment
А разве (случайно?) на войне то, что в ухе?   -  person Kukeltje    schedule 16.04.2018
comment
О, и Wildfly 12 по умолчанию использует JSF 2.2, если я правильно понял. Вы должны переключить его на 2.3, которая является первой версией, содержащей f:websocket   -  person Kukeltje    schedule 16.04.2018


Ответы (1)


f:websocket доступен, начиная с JSF 2.3, и хотя Wildfly 12 содержит некоторые функции JavaEE 8, по умолчанию он запускается в режиме JavaEE 7, который представляет собой «просто» JSF 2.2.

Из самого последнего (редактировать: на момент написания ;-)) Документация по выпуску WildFly 12

По умолчанию WildFly 12 запускается в режиме EE7. Чтобы использовать эти новые возможности, вам необходимо включить режим предварительного просмотра EE8. Этого можно добиться, передав свойство ee8.preview.mode во время запуска:

./standalone.sh -Dee8.preview.mode=true

Есть и другие варианты, чтобы включить это. Из тех же документов:

В качестве альтернативы этого можно добиться, запустив сервер с помощью новой конфигурации standalone-ee8.xml, которая просто включает свойство в конфиг.

./standalone.sh -c standalone-ee8.xml

Интерфейс командной строки также можно использовать для изменения существующей конфигурации, чтобы добавить это свойство. Например:

embed-server --admin-only=true /system-property=ee8.preview.mode:add(value=true) stop-embedded-server

Затем у вас должны быть JSF 2.3 и f:websockets

person Kukeltje    schedule 16.04.2018
comment
Здорово! А я даже WildFly 12 не использую (пока еще на 11). Просто немного погуглил и подумал. - person Kukeltje; 16.04.2018