JSF-Spring 4.0两个框架集成--邵京国
2008-11-27 22:39
465 查看
你想赚钱吗? 那就投我吧!IT从业人员最好的兼职网
JSF-Spring 4.0
近日,因为一项目,拟引入JSF-Spring-Hibernate组合,故稍做研究。虽然JSF目前离成熟还有一段距离,不过一般应用貌似够用了,如果发现问题倒也可以提一下,算是做一点贡献,另外JSF-Spring之组合,看到有名曰JSF-Spring的整合方案,故前往一阅,顺手译了一下。 >>JSF-Spring JSF-Spring提供全面整合JSF和Spring的代码,其独立实现,可以用于任何JSF实现。 兼容版本 JSF1.1 Springframework 2.0 特性 Spring从1.1开始提供JSF支持。这里有两种方式的比较: Spring:链接JSF和Spring Spring包含了一个JSF VariableResolver的实现,能识别Spring-managed beans,这样就可以在JSF中通过Bean的名称来访问它们。其实就是提供给JSF一个Spring beans的链接。这种解决方案对于大部分的情况来说已经够用了。 JSF-Spring:两个框架集成 JSF-Spring提供给Spring一个包含JSF的Managed-beans的WebApplicationContext,并将其集成至Spring的上下文中。这样Spring beans就可以使用JSF beans,并将JSF beans集成到Spring中,如此就提供了一个更全面的双向集成,包括在JSF beans中使用Spring的特性。此外,也能够集成SpringMVC以及通过Spring集成的其他基于行为的WEB应用框架(如Struts等)。和jsf-facelets一起使用,可以用Get方式提供表单,并且可以使用一般的JSP来编写WEB应用。 原文: JSF-Spring http://jsf-spring.sourceforge.net/index.shtml >>JSF-Spring快速入门 这个入门将告诉你如何在一个WEB应用中使用JSF-Spring。这里假设已经有一个WEB应用,第一步就是如何安装配置Spring和JSF。如果你已经安装配置过了,那么可以略过。 安装Spring 从http://www.springframework.org/download下载Spring(2.0),解压下面的jar文件到WEB-INF/lib目录: dist/spring.jar lib/Jakarta-commons/commons-logging.jar 然后,建立一个基本的应用上下文。 WEB-INF/applicationContext.xml <?xml version="1.0" encoding="UTF-8"?/gt; <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans></beans> 并且为在应用启动时Spring初始化定义监听器: WEB-INF/web.xml (部分) <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> 安装JSF 从http://java.sun.com/javaee/javaserverfaces/download.html下载Sun的参考实现(V1.1.01)或从http://myfaces.apache.org/download.html下载MyFaces (核心1.1.4发布),并且将下载的压缩包中lib目录下的jar文件都复制到WEB-INF/lib中。如果你使用的是SUN的参考实现的话,还需要jstl.jar,这个包在JSF发布中没有提供。 然后,建立一个基本的配置文件: WEB-INF/faces-config.xml <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config></faces-config> 并且定义JSF的Servlet,用于启动JSF,按管所有的请求: WEB-INF/web.xml(部分) <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> 安装JSF-Spring 从http://sourceforge.net/project/showfiles.php?group_id=107519下载JSF-Spring(4.0),并且解压下面的jar文件到WEB-INF/lib目录: dist/jsf-spring.jar dist/cglib-nodep-2.1_3.jar 然后,定义在应用启动时用于初始化JSF-Spring的监听器: WEB-INF/web.xml (部分) <listener> <listener-class> de.mindmatters.faces.spring.context.ContextLoaderListener </listener-class> </listener> 注意,这里不是取代Spring的ContextLoaderListener,这两个都需要,而且定义这两个监听器的顺序很重要,首先是Spring的,然后才是JSF-Spring的。 测试配置-一个简单的应用 为了检查JSF-Spring是否已配置好,这里将建立两个简单的Bean:一个服务Bean提供数据,另一个界面Bean格式化表现。 de/mindmatters/faces/quickstart/service/TimeService.java package de.mindmatters.faces.quickstart.service; import java.util.Date; public interface TimeService { Date getNow(); } de/mindmatters/faces/quickstart/service/TimeServiceImpl.java package de.mindmatters.faces.quickstart.service; import java.util.Date; public class TimeServiceImpl implements TimeService { public Date getNow(){return new Date();} } WEB-INF/applicationContext.xml(部分) <bean id="timeService" class="de.mindmatters.faces.quickstart.service.TimeServiceImpl" /> de/mindmatters/faces/quickstart/ui/UiBean.java package de.mindmatters.faces.quickstart.ui; import java.text.SimpleDateFormat; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; import de.mindmatters.faces.quickstart.service.TimeService; public class UiBean implements InitializingBean { private TimeService timeService = null; public void afterPropertiesSet() throws Exception { Assert.notNull(getTimeService(), "timeService must be set"); } public String getShortDate() { return SimpleDateFormat. getDateInstance(SimpleDateFormat.SHORT). format(getTimeService().getNow()); } public TimeService getTimeService() { return timeService; } public void setTimeService(TimeService timeService) { this.timeService = timeService; } } WEB-INF/faces-config.xml (部分) <managed-bean> <managed-bean-name>uiBean</managed-bean-name> <managed-bean-class> de.mindmatters.faces.quickstart.ui.UiBean </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>timeService</property-name> <value>#{timeService}</value> </managed-property> </managed-bean> 如上所示,uiBean是JSF管理的,而timeService则是由Spring管理的。这样,可以得到Spring的好处,即InitializingBean。 现在,建立一个简单的页面用以渲染当前日期: index.jsp <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:view> <html> <head> <title>jsf-spring quickstart</title> </head> <body> <h:outputText value="#{uiBean.shortDate}"/> </body> </html> </f:view> 记住,这里访问该页面用/index.jsf,如果使用/或/index.jsp访问的话,请求将不能初FacesServlet接管,并会产生javax.servlet.jsp.JspException: Cannot find FacesContext错误。 |
相关文章推荐
- 【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.3 集成Struts2.x 集成JSF ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3
- 分享一款基于Spring集成activiti全新高大尚后台框架
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载【转】
- 微服务开发的入门级框架Spring Boot详解:集成Mybatis
- 框架学习之Spring 第四节 Spring集成JDBC组件开发
- Springboot中集成Swagger2框架的方法
- 【第十章】集成其它Web框架 之 10.2 集成Struts1.x ——跟我学spring3
- XMemcached和spring缓存框架集成
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- Apache Camel框架集成Spring
- XMemcached与Spring3.2缓存框架集成
- JSF和Spring集成
- Spring+SpringMvc+Mybatis框架集成搭建教程三(框架整合测试程序开发)
- 【第十章】集成其它Web框架 之 10.3 集成Struts2.x ——跟我学spring3
- jsf、Spring、Hibernate 集成 faces-managed-beans.xml 配置
- Spring集成quartz任务调度框架