JSF 2.3 中的 f:websocket
Posted
技术标签:
【中文标题】JSF 2.3 中的 f:websocket【英文标题】:f:websocket in JSF 2.3 【发布时间】:2018-09-26 00:44:54 【问题描述】:我试图让 BalusC 的 JSF 2.3+ 示例 (How can server push asynchronous changes to a html page created by 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,但没有为名称定义标签: 网络套接字
在 IntelliJ IDEA 中:
f:websocket
显示为红色,好像找不到?
f:websocket 的标签库在哪里?
【问题讨论】:
“我已经添加了 JBoss JSF JAR:” 你在哪里添加的? Wildfly 12 本身已经自带:mvnrepository.com/artifact/org.wildfly/wildfly-jsf/12.0.0.Final 我添加到我的 IntelliJ 库中,试图摆脱红色突出显示的:f:websocket
的版本
【参考方案1】:
f:websocket
从 JSF 2.3 开始可用,虽然 Wildfly 12 包含 一些 JavaEE 8 功能,但它默认以 JavaEE 7 模式启动,即“只是”JSF 2.2。
最近(编辑:在撰写本文时 ;-))WildFly 12 release documentation
WildFly 12 默认以 EE7 模式启动。为了使用这些新功能,您必须启用 EE8 预览模式。这可以通过在启动期间传递 ee8.preview.mode 属性来完成:
./standalone.sh -Dee8.preview.mode=true
还有其他选项可以启用此功能。来自相同的文档:
或者,这可以通过使用新的standalone-ee8.xml 配置启动服务器来实现,该配置只是将属性包含在配置中。
./standalone.sh -c standalone-ee8.xml
CLI 也可用于修改现有配置以添加此属性。例如:
embed-server --admin-only=true /system-property=ee8.preview.mode:add(value=true) stop-embedded-server
然后您应该拥有 JSF 2.3 和 f:websockets
【讨论】:
太棒了!而且我什至不使用 WildFly 12(但仍然在 11 上)。只是做了一些创造性的谷歌搜索和思考。以上是关于JSF 2.3 中的 f:websocket的主要内容,如果未能解决你的问题,请参考以下文章
升级到 JSF 2.3 后,@Inject 在 @FacesConverter 中不起作用
JSF-2.3 找不到我的 @Named CDI-1.2 托管 bean
JSF 2.3 无法通过 Tomcat 9 支持 WebSocket
JSF 2.3 与 Spring 4.3 @Inject @ManagedProperty 问题