JSF 2.3 尚未发布。最终版本与 Java EE 8 一起计划在 2017 年上半年发布。也许您指的是里程碑(测试版)版本,它应该可以通过文件名中的后缀来识别,例如mXX
当前版本。JSF 2.3 目前仍在进行中。例如,仅添加了 JSF 工件的 CDI 生产者,仅添加了新的 JSF 2.3 ,仅添加了新的 JSF 2.3 ,并且即将推出的将包括新的。等等。javax.faces-2.3.0-m06.jar
@Inject FacesContext
m04
<f:websocket>
m05
<h:commandScript>
m06
m07
<f:importConstants>
基本上,您需要等待 Java EE 8 发布并且您的服务器供应商提供与 Java EE 8 兼容的服务器。如果是 TomEE,那将是虚构的未来 TomEE 8 版本。在这种情况下,您可以简单地升级服务器并将 Java EE 版本更新pom.xml
为8.0
.
但是,也可以在服务器中手动升级 Mojarra。如何做到这一点取决于所使用的服务器。对于 TomEE 7.0.1 Plume,理论上应该是用/lib/javax.faces-2.2.12.jar
新文件替换现有文件的问题。从理论上讲,因为当我尝试它时,OpenWebBeans 似乎不喜欢它。部署启用 JSF 的项目时出现以下异常(只是一个带有空faces-config.xml
文件的空 WAR)。
java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006)
at org.apache.webbeans.portable.AnnotatedElementFactory.setAnnotatedType(AnnotatedElementFactory.java:154)
at org.apache.webbeans.container.BeanManagerImpl.addAdditionalAnnotatedType(BeanManagerImpl.java:1292)
at org.apache.webbeans.portable.events.discovery.BeforeBeanDiscoveryImpl.addAnnotatedType(BeforeBeanDiscoveryImpl.java:134)
at com.sun.faces.cdi.CdiExtension.beforeBean(CdiExtension.java:95)
... 29 more
似乎需要做更多的工作才能确定这是 OWB 还是 Mojarra 中的问题。到目前为止,Mojarra 的 CDI 功能仅使用 Weld 进行了测试(在 GlassFish/Payara 和 WildFly 中)。目前,很遗憾您还不能在 TomEE 7 上使用 JSF 2.3。
请注意,在这种情况下,pom.xml
不需要编辑。仅为了在 IDE 中调试期间自动附加正确的源,您需要显式添加所需的坐标,并将目标范围设置为provided
.
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.3.0-m06</version>
<scope>provided</scope>
</dependency>
这适用于任何 Mojarra 版本。
也可以看看: