【问题标题】:Integrating Spring with JSF2将 Spring 与 JSF2 集成
【发布时间】:2012-08-03 17:08:09
【问题描述】:

我与 jsf2 springhibernate 一起从事一个项目。 当我想将 jsf2 与 spring 集成时,在tomcat7 中启动我的 JSF 时出现此错误。我有罐子 myfaces-impl & api。我在网上搜索,但直到现在都没有找到解决办法。

Grave: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) com.sun.faces.config.ConfigureListener
java.lang.NoClassDefFoundError: com/sun/facelets/tag/TagHandler
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2823)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1655)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533)
at com.sun.faces.util.Util.loadClass(Util.java:205)
at com.sun.faces.config.processor.AbstractConfigProcessor.loadClass(AbstractConfigProcessor.java:289)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processHandlerClass(FaceletTaglibConfigProcessor.java:365)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags(FaceletTaglibConfigProcessor.java:351)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary(FaceletTaglibConfigProcessor.java:299)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process(FaceletTaglibConfigProcessor.java:248)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:313)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:208)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1525)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1515)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.sun.facelets.tag.TagHandler
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533)
... 25 more

web.xml:

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application-context.xml</param-value>
</context-param>

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<filter>
<filter-name>RichFaces Filter</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>RichFaces Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

faces-config.xml:

<application>
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
</application>

【问题讨论】:

    标签: java spring jsf-2


    【解决方案1】:

    您需要添加jsf2 库。如果您已添加它,则它不在您的类路径中。

    【讨论】:

    • 是的,我已经添加了 jsf2 库(jsf-impl、jsf-api、jstl)。并且存在于我的类路径中(我选择了构建路径 --> 库 --> 添加 jars )。这些步骤已经完成,但它显示了这些错误。
    • 我解决了这个问题。我要做的就是将 jsf 版本从 1.5 更改为 2 。
    【解决方案2】:

    在 JSF 2 中使用旧的 facelets jar 是没有意义的,因为实现捆绑了 facelets VDL。相反,似乎在 JSF 2 应用程序中使用了一些 JSF 1.2 库,这是不对的。如果您使用的是 JSF 2,只需更新您的库即可。

    【讨论】:

    • 我正在学习一个教程,并且我添加了提到的库,所以我认为这是启动监听器的问题。
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2012-08-24
    • 2020-08-31
    • 1970-01-01
    • 2012-10-20
    相关资源
    最近更新 更多