JSF与Spring的集成方式

2023-06-15,

本篇内容介绍了“JSF与Spring的集成方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

JavaServer Faces (JSF) 是一个基于组件的事件驱动框架。JSF 的组件集包含一个事件发布模型、一个轻量级的 IOC 容器和很多用于几乎所有其他公共 GUI 特性的组件,这些特性包括可插入呈现、服务器端验证、数据转换、页面导航管理等等,在某些场景下,将JSF与Spring进行集成是有意义的。

由于JSF与Spring均遵循Servlet,因此二者的集成是简单的。JSF与Spring进行集成的关键类是DelegatingVariableResolver。

为了在JSF应用程序中配置这个解析器,需要修改JSF的faces-context.xml文件。在<faces-config>元素中增加<application>和<variable-resolver>元素,而其中<variable- resolver>的值必须引用Spring的DelegatingVariableResolver。示例如下:

  1. <faces-config> 

  2. <application> 

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

  4. <locale-config> 

  5. <default-locale>zh_CN</default-locale> 

  6. <supported-locale>en</supported-locale> 

  7. <supported-locale>zh_CN</supported-locale> 

  8. </locale-config> 

  9. <message-bundle>messages</message-bundle> 

  10. </application> 

  11. </faces-config> 

DelegatingVariableResolver类将首先在JSF实现中查找缺省的解析器,其后在Spring的WebApplicationContext中去查找,从而开发人员可以通过配置文件将对象依赖注入到JSF管理的bean。被管理的bean定义在faces-config.xml文件内。下例说明了如何从Spring的业务环境中检索名为#{userManager}的bean:

  1. <managed-bean> 

  2. <managed-bean-name>userList</managed-bean-name> 

  3. <managed-bean-class>com.example.jsf.UserList</managed-bean-class> 

  4. <managed-bean-scope>request</managed-bean-scope> 

  5. <managed-property> 

  6.   <property-name>userManager</property-name> 

  7.   <value>#{userManager}</value> 

  8. </managed-property> 

  9. </managed-bean> 

此外需要在web.xml配置文件中加入如下代码:

  1. <listener> 

  2.         <listener-class>org.springframework.web.context.                                               ContextLoaderListener</listener-class> 

  3.   </listener> 

  4.   <context-param> 

  5.       <param-name>javax.faces.CONFIG_FILES</param-name> 

  6.       <param-value> 

  7.         /WEB-INF/faces-config.xml  

  8.       </param-value> 

  9.   </context-param> 

  10.   <context-param> 

  11.       <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 

  12.     <param-value>client</param-value> 

  13.   </context-param> 

  14.   <servlet> 

  15.     <servlet-name>Faces Servlet</servlet-name> 

  16.     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 

  17.     <load-on-startup>1</load-on-startup> 

  18.   </servlet> 

  19.   <servlet-mapping> 

  20.     <servlet-name>Faces Servlet</servlet-name> 

  21.     <url-pattern>*.jsf</url-pattern> 

  22.   </servlet-mapping> 

注意Listener是Servlet API的V2.3版本后才引入的特性,如果使用Servlet 2.2容器,则需要使用ContextLoaderServlet来实现同样的功能。

“JSF与Spring的集成方式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注本站网站,小编将为大家输出更多高质量的实用文章!

《JSF与Spring的集成方式.doc》

下载本文的Word格式文档,以方便收藏与打印。