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
分享到:
相关推荐
自己收集的jsf+spring整合配置文件及案例
jSF2.0与Spring整合实例+教程
这是jsf+spring2.5+jpa(hibernate)的jar包,很多人为了jsj环境而配置半天,在此提供jar包共享。注:除了ajax4jsf和tomahawk-1.1.3.jar,因为csdn只让我上传20mb,大家自己可以下一下自己试试。
运行在jboss 下的web应用,其中用到 jsf 和spring的整合技术
用于整合jsf+jpa+spring,绝对详细可靠
JSF+Spring+Hibernate(框架整合)详细过程,有代码和视图
JSF+Spring+Hibernate整合图文教程,超级详细。每一步都有截图还有解释。
jsf2+spring sample
JSF+Spring+hibernate整合网站例子 JSF+Spring+hibernate整合网站例子
部门人员一对多的CRUD操作 hibernate: 管理实体...spring:数据源配置与获得session IOC依赖注入 和 AOP 事务管理 jsf : backing bean的操作 jsf 标签应用 jsf 信息国际化以资源绑定 jsf 表单验证 jsf 导航设定
精通JSF基于EJB Hibernate Spring整合开发与项目
JSf-Spring-Hibernate整合开发案例-教程+Demo 原名应该是Put_JSF_ToWork 里面有一个案例,经典的分层模式。 我这个文件是包括源代码以及那份PDF的,因为是老外的东西怕有一天突然下载不了了 所以留一份...
JSF和Spring集成的资料比较少,原理是获得彼此的上下文引用,以此进一步获得各自管理的bean,这是可能的,因为两者是web应用框架都遵循servlet规范,为二者整合提供了可能和基础.
细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,
jsf1.2+spring2.0+hibernate3.2整合demo part1
Spring 整合 JSF 小例子 可以被eclipse导入 直接运行
Jsf2.0+spring+hibernate 整合,基于注解的方式
jsf+hibernate+spring集成案例分析