整合JSF与Spring

 /*************************************************
*Author:Java619
*Time:2006-12-24
*************************************************/

JSF与Spring整合的原理是获得彼此的上下文引用,以此进一步获
得各自管理的bean,这是可能的,因为两者是Web应用框架都遵循Servlet规范,
为二者整合提供了可能和基础。

在Spring中ApplicationContext是相当重要的类,对于web应用,它还包装了
Javax.servlet.ServletContext, 为web应用提供了所有可以利用的数据,
包括可管理bean,Faces中通过FacesContext类可以获得所有可以利用的资源,
同样包括JSF的可管理支持bean,它们都围绕着ServletContext提供了自己的
门面,通过各自的门面在Servlet容器的世界里彼此相通。

这边介绍两种整合的方法

一、利用自定义的类

编写一个实用类SpringFacesUtil

 

package  com.ceun.util;
 
import  org.springFramework.context.ApplicationContext;
import  org.springframework.web.context.support.WebApplicationContextUtils;
import  javax.faces.context.FacesContext;
import  javax.servlet.ServletContext;
public   final   class  SpringFacesUtil
{
    
/**
    * 从Spring中查找bean.
    * 
@param beanName String
    * 
@return Object
    
*/

    
public static Object findBean(String beanName){
       ServletContext context 
= (ServletContext) FacesContext.getCurrentInstance().
        getExternalContext().getContext();
       ApplicationContext appctx 
= WebApplicationContextUtils.
       getRequiredWebApplicationContext(context);
       
return appctx.getBean(beanName);
    }

}

经过编译后,就可以通过使用这个实用类的finsBean方法来,获得Spring管理的bean了

提示:运行前,确认你已经在应用配置文件(web.xml)中加入如下代码,并拷贝相应的类库存到应用WEB-INF/lib

目录

...
< context-param >
        
< param-name > javax.faces.CONFIG_FILES </ param-name >
        
< param-value > /WEB-INF/faces-config.xml </ param-value >
    
</ context-param >
<!-- 使用listenner,加载Spring 当然也可用Servlet方式-(具体见Spring相关配置)-->
<listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
<servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
...

 

二、使用第三方框架

这边介绍一种使用jsf-spring框架整合JSF与Spring的方法

1.首先从http://jsf-spring.sourceforge.net/下载jsf-spring类库

因为此例假设整合JSF1.1 Spring 1.2

所以下载jsf-spring-3.0.0.zip,下载解压后拷贝dist目录下的文件到你的应用WEB-INF/lib目录下

2.修改应用配置文件(web.xml)

在刚才添加的加载Spring的listener后面。再添加一个listener

<!-- 这个一定要插在Spring listener之后 -->
< listener >
        
< listener-class >
            de.mindmatters.faces.spring.context.ContextLoaderListener
        
</ listener-class >
    
</ listener >

3.假设你有个由JSF管理userBean bean,你现在想把userBean中的其中一个属性如userDAO,改成从Spring bean

中获得

那么你可以在faces-config.xml中作如下修改

< managed-bean >
        
< managed-bean-name > userBean </ managed-bean-name >
        
< managed-bean-class >
            com.ceun.bean.UserBean        
</ managed-bean-class >
        
< managed-bean-scope > request </ managed-bean-scope >
        
< managed-property >
            
< property-name > userDAO </ property-name >
<!-- 通过#{userDAO}引用Spring管理的userDAO bean -->
            
< value > #{userDAO} </ value >
        
</ managed-property >
    
</ managed-bean >

4.重启服务器,在你的应用中使用Spring管理的bean

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值