Java Maven-JSF2.0没有';不能在嵌入式tomcat上工作
我使用JSF2.2、Primefaces和Tomcat7依赖项创建了一个Maven Web应用程序 我的JSF实现是Mojarra 2.2.4,我在POM上添加了以下依赖项:Java Maven-JSF2.0没有';不能在嵌入式tomcat上工作,java,maven,jsf-2,plugins,embedded-tomcat-7,Java,Maven,Jsf 2,Plugins,Embedded Tomcat 7,我使用JSF2.2、Primefaces和Tomcat7依赖项创建了一个Maven Web应用程序 我的JSF实现是Mojarra 2.2.4,我在POM上添加了以下依赖项: <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.2.4</
<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>
com.sun.faces
但是,尽管我无法识别@ManagedBean
注释,但它只在faces config.xml
上使用ManagedBean标记
有没有一种方法可以包含对Tomcat Embedded formaven7 Tomcat插件的支持
PS:tomcat7:run war运行正常,但我不喜欢,因为它显然是静态运行,不可能动态更改xhtml代码。我决定按照以下步骤从Mojarra 2.2.4切换到MyFaces 2.2.0:
删除我的POM中的Mojarra依赖项
在我的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>
org.apache.myfaces.core
! 我不明白这个问题。JSF是与您的应用程序一起部署的,不是吗?是的,我在POM上有JSF依赖项,但问题是Maven Tomcat Embedded。它不能识别JSF2.X。事实上,如果我构建WAR并将其部署在外部Tomcat上,webapp就可以工作。顺便说一下,永久性的“目标不可访问,标识符[beanname]解析为null”的有趣原因。我以前见过关于这个问题的问题没有明显的原因。我想知道Maven+Embedded Tomcat到底在做什么。问题是由于插件的影响(它没有在WAR或目录中运行webapp),注释扫描算法无法正常运行。如果您使用的是MyFaces,请尝试设置org.apache.MyFaces.annotation.SCAN_PACKAGES param,以指示扫描所选包的算法。这是一个应放在web.xml上的参数。我不知道Mojarra背后的细节,但我想它存在一个类似的参数,但我不知道它是否会工作,因为我们很久以前就必须做一些特殊的事情使它工作,这与规范中提出的默认算法不同。我可以告诉你的是,在MyFaces中添加参数正是为了修复这些情况。切换到MyFaces很容易,会让你的生活更轻松。试试2.2.0工件。我知道你早就解决了这个问题,但是我发现了一个快速的解决方案,使用Jetty插件而不是Tomcat。
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
<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>