当前位置: 网学 > 编程文档 > JSP > 正文

JSF整合Spring错误的解决办法

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/17
下载{$ArticleTitle}原创论文样式

    在JSF中整合Spring ,主要就是为了让Spring的Bean名称,可以被JSF当做是自己<managed-bean-name>标签上的名称来使用。也就是当JSF定义文件中根据名称要求Bean实例时,若JSF在自己的Context中找不到名称,就可以到Spring的Context中去找。Spring的Bean的定义文件就是applicationContext.xml;而JSF的Bean的定义文件就是faces-config.xml。我用的是MyEclipse。

    本文的主角就是在整合过程中,Tomcat启动时出现的——严重: Error listenerStart

    下面就开始痛苦的整合过程。1.在JSF的faces-config.xml中添加如下设置:

 

<application>
        <variable-resolver>
            org.springframework.web.jsf.DelegatingVariableResolver
        </variable-resolver>
    </application>

此处设置的目的是为了让Spring的Bean的名称可以在JSF中使用。

2.在web.xml中添加如下设置:

注意:此处设置有错误。本文题目中的主角——严重: Error listenerStart就诞生于此处。

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

为了能知道Bean定义文件的名称和位置,必须在<listener>中使用ContextLoaderListener类,并在<context-param>中指定Bean定义文件的名称和位置。

3.设置好了,现在启动Tomcat。

错误主角出场:严重: Error listenerStart。

错误就在<context-param>中,其<param-value>应该由/WEB-INF/applicationContext.xml,改为/WEB-INF/classes/applicationContext.xml。

到工程目录下一看,就明白了。可以看到web.xml文件处在\\WebRoot\\WEB-INF下,而applicationContext.xml却在\\WebRoot\\WEB-INF\\classes下。

applicationContext.xml就是Spring的Bean的定义文件;而JSF的Bean的定义文件就是faces-config.xml。

所以,正确的设置为:

 

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </context-param>[Page]

 

另外,由于faces-config.xml于web.xml在同一目录下,都在\\WebRoot\\WEB-INF下。所以在web.xml中设置为:

 

<context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>/WEB-INF/faces-config.xml</ param-value>
     </context-param>

 

 

另外,此前已经整合Hibernate和Spring,变成Hibernate+Spring+JSF。在运行过程中又出现如下异常:

java.lang.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass

    解决办法:

首先,在MyEclipse的安装目录下搜索hibernate-annotations.jar,Ctrl+C比较大的一个(一个222K,另一个127K)

然后,到工程的\\WebRoot\\WEB-INF\\lib下,Ctrl+V,覆盖比较小的那个。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号