繁体   English   中英

Maven - JSF 2.0不适用于嵌入式tomcat

[英]Maven - JSF 2.0 doesn't work on embedded tomcat

我使用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'已解析为null

这表明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上使用managedbean标记。

有没有办法在maven7-tomcat-plugin包含对Tomcat Embedded的JSF 2.x支持?

PS: tomcat7:run-war有效,但我不喜欢,因为很明显它是静态运行,没有任何可能在飞行中更改xhtml代码(例如)。

我决定按照以下步骤从Mojarra 2.2.4切换到MyFaces 2.2.0:

  1. 删除我的POM中的Mojarra dependecies
  2. 在我的POM中添加MyFaces依赖:

     <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-api</artifactId> <version>2.2.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-impl</artifactId> <version>2.2.0</version> <scope>compile</scope> </dependency> 
  3. 在我的web.xml上更改listener-class

     <listener> <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 

  4. 在我的web.xml上添加context-param

     <context-param> <description>Defines which packages to scan for beans, separated by commas. Useful for when using maven and jetty:run (version 6) or tomcat:run </description> <param-name>org.apache.myfaces.annotation.SCAN_PACKAGES</param-name> <param-value>eu.dedalus</param-value> 

.5从WEB-INF / lib中删除jsf-api和jsf-impl。

.6 [ECLIPSE ONLY]使用M2REPO变量在Build Path中添加myfaces.api和myfaces-impl库,并删除jsf-api和jsf-impl库。

感谢https://stackoverflow.com/users/814956/lu4242

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM