Jsf与Spring的整合原理
来源:互联网 发布:微信扫描淘宝二维码 编辑:程序博客网 时间:2024/05/07 04:27
Jsf做为Web框架,Spring做为业务层框架,两者可以结合起来用。只要在faces-config.xml中做一个很简单的配置:
<faces-config>
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
...
</application>
</faces-config>
理解这个配置,就需要接触到Java平台中一个常用的概念:Resolver。它的意思是“解决者”。遇到一个陌生的东西,怎么
处理就需要找相应的Resolver。比如在一个视图文件jsp中,有这么一行:
<h:outputText value="#{welcome.hello}"/>
其中welcome是注册在Spring中的一个组件,并没有注册成Jsf的managed bean。当解析到#{welcome.hello}时候,Jsf框架去
找注册的managed bean,当然它会找不到,系统在这个位置不会有任何显示。而当我们加上上面的el-resolver时,Jsf框架会
在Spring框架中找。
当然你也可以在managed bean配置中注入Spring管理的bean,例如:
<managed-property>
<property-name>welcome</property-name>
<property-class>guessNumber.Welcome</property-class>
<value>#{welcome}</value>
</managed-property>
Jsf框架读取这个配置文件,也会到Spring中找到名字为“welcome”的bean.
Jsf寻找的过程是一个职责链模式,它从一系列的Resolver中寻找需要的东西,一旦找到,即返回。这个链是有顺序的,这个
顺序在Jsf Spec中有清晰的定义。比如有两个不同bean, 一个注册在Sping中,另一个注册在Jsf中,你不小心给了相同的名字,
它会先去Sping中找,最终Spring中注册的bean起了作用。
打开SpringBeanFacesELResolver源代码,我们可以看到它最终继承了一个抽线类:ELResolver。这个类中的方法都有一个参数
ELContext,从ELContext中顺藤摸瓜得到servletContext,然后取出名字为
"org.springframework.web.context.WebApplicationContext.ROOT"
的变量,此变量即为Sping中的WebApplicationContext,有了这个,万事大吉,我们可以从中取出所有注册过的bean.
那么又是谁把这个变量放到
servletContext中了呢,当然是
"org.springframework.web.context.ContextLoaderListener"了。
<faces-config>
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
...
</application>
</faces-config>
理解这个配置,就需要接触到Java平台中一个常用的概念:Resolver。它的意思是“解决者”。遇到一个陌生的东西,怎么
处理就需要找相应的Resolver。比如在一个视图文件jsp中,有这么一行:
<h:outputText value="#{welcome.hello}"/>
其中welcome是注册在Spring中的一个组件,并没有注册成Jsf的managed bean。当解析到#{welcome.hello}时候,Jsf框架去
找注册的managed bean,当然它会找不到,系统在这个位置不会有任何显示。而当我们加上上面的el-resolver时,Jsf框架会
在Spring框架中找。
当然你也可以在managed bean配置中注入Spring管理的bean,例如:
<managed-property>
<property-name>welcome</property-name>
<property-class>guessNumber.Welcome</property-class>
<value>#{welcome}</value>
</managed-property>
Jsf框架读取这个配置文件,也会到Spring中找到名字为“welcome”的bean.
Jsf寻找的过程是一个职责链模式,它从一系列的Resolver中寻找需要的东西,一旦找到,即返回。这个链是有顺序的,这个
顺序在Jsf Spec中有清晰的定义。比如有两个不同bean, 一个注册在Sping中,另一个注册在Jsf中,你不小心给了相同的名字,
它会先去Sping中找,最终Spring中注册的bean起了作用。
打开SpringBeanFacesELResolver源代码,我们可以看到它最终继承了一个抽线类:ELResolver。这个类中的方法都有一个参数
ELContext,从ELContext中顺藤摸瓜得到servletContext,然后取出名字为
"org.springframework.web.context.WebApplicationContext.ROOT"
的变量,此变量即为Sping中的WebApplicationContext,有了这个,万事大吉,我们可以从中取出所有注册过的bean.
那么又是谁把这个变量放到
servletContext中了呢,当然是
"org.springframework.web.context.ContextLoaderListener"了。
- Jsf与Spring的整合原理
- Jsf与Spring的整合原理
- JSF与Spring的整合原理
- 整合JSF与Spring
- spring 与 jsf整合
- JSF,Hibernate,Spring的整合与杂谈
- jsf和spring的整合
- JSF与DWR的整合
- JSF与DWR的整合
- Struts2与Spring整合的原理
- struts与spring整合的原理
- Spring与Struts2整合的执行原理.
- 整合 JSF+Spring+Hibernate的小例子
- Spring整合jsf的管理bean对象
- 使用JSF+Spring整合
- JSF整合Spring
- JSF+Hibernate+Spring整合
- 整合Spring和JSF
- Hadoop集群内lzo的安装与配置
- css命名规则
- Spinlocks in Linux
- Android实现任务管理器
- ConfigurationManager.OpenExeConfiguration读取配置文件
- Jsf与Spring的整合原理
- Oracle 丢失更新问题的解决方案
- 经典:从追MM谈Java的23种设计模式
- JSP仿百度分页,谷歌分页页码处理
- 允许ubuntu下mysql远程连接
- 一句话JPG木马
- VB API URL编码 URL解码
- struct in_addr
- 配置log4j