我使用 JSF 2.2、Primefaces、Tomcat 7 依赖项创建了一个 Maven Web 应用程序。
我的 JSF 的实现是 Mojarra 2.2.4,我在我的 POM 上添加了这个依赖:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
<scope>compile</scope>
</dependency>
但不幸的是,我tomcat7-maven-plugin
对它的嵌入式 tomcat 有疑问。如果我使用tomcat7:run
命令,我的 webapp 启动没有问题,但是当它尝试加载托管 bean 时,我收到此错误:
目标不可达,标识符“testBean”解析为空
这表明 webapp 正在使用JSF 1.x
而不是JSF 2.x
. 的配置JSF 1.x
器无法识别@ManagedBean
注释,这将导致它们不会自动加载/初始化而无需 faces-config.xml。
我正在使用 tomcat Embedded 7.0.50,使用它进行配置:http: //tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/adjust-embedded-tomcat-version.html
但是尽管我不认识@ManagedBean
注释,但它只能在faces-config.xml
.
有没有办法包括JSF 2.x
对 Tomcat Embedded 的支持maven7-tomcat-plugin
?
PS:tomcat7:run-war
有效,但我不喜欢,因为显然它是静态运行,没有任何可能动态更改 xhtml 代码(例如)。