在我的JSF2应用程序中,我在Primefaces(5.1)自动完成时遇到了NPE
org.primefaces.component.autocomplete.AutoCompleteRenderer
.encodeSuggestionsAsList(AutoCompleteRenderer.java:492)
我通过替换maven依赖
解决了我的问题<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
</dependency>
通过
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.4</version>
</dependency>
这令我感到困惑。
搜索项目主页我找到了这些maven存储库:
http://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.2.4
http://mvnrepository.com/artifact/org.glassfish/javax.faces/2.2.4
他们都声称相同的描述并引用与主页相同的URL:
描述:Oracle对JSF 2.2规范(2.2.4)的实现
主页:http://java.sun.com/javaee/javaserverfaces/
有人可以解释一下这个区别吗?不应该完全一样吗?
提示:我了解太阳和甲骨文的历史。 ;)
答案 0 :(得分:7)
com.sun.faces:jsf-impl
仅包含实现(Mojarra)。它缺乏API。你需要一个com.sun.faces:jsf-api
。
org.glassfish:javax.faces
是包含API和impl的单JAR包(您也可以在文件大小上看到它)。
关于仅使用jsf-impl
时的具体问题,显然您忘记了jsf-api
,或者在实际使用非Java EE容器(如Tomcat)时依赖javax:javaee-web-api
。 / p>