JSF-Spring 4.0
近日,因为一项目,拟引入JSF-Spring-Hibernate组合,故稍做研究。虽然JSF目前离成熟还有一段距离,不过一般应用貌似够用了,如果发现问题倒也可以提一下,算是做一点贡献,另外JSF-Spring之组合,看到有名曰JSF-Spring的整合方案,故前往一阅,顺手译了一下。 >>JSF-Spring JSF-Spring提供全面整合JSF和Spring的代码,其独立实现,可以用于任何JSF实现。 兼容版本
特性 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快速入门 这个入门将告诉你如何在一个WEB应用中使用JSF-Spring。这里假设已经有一个WEB应用,第一步就是如何安装配置Spring和JSF。如果你已经安装配置过了,那么可以略过。 安装Spring 从http://www.springframework.org/download下载Spring(2.0),解压下面的jar文件到WEB-INF/lib目录:
然后,建立一个基本的应用上下文。 WEB-INF/applicationContext.xml <?xml version="1.0" encoding="UTF-8"?/gt; 并且为在应用启动时Spring初始化定义监听器: WEB-INF/web.xml (部分) <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'?> 并且定义JSF的Servlet,用于启动JSF,按管所有的请求: WEB-INF/web.xml(部分) <servlet> 安装JSF-Spring 从http://sourceforge.net/project/showfiles.php?group_id=107519下载JSF-Spring(4.0),并且解压下面的jar文件到WEB-INF/lib目录:
然后,定义在应用启动时用于初始化JSF-Spring的监听器: WEB-INF/web.xml (部分) <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 { de/mindmatters/faces/quickstart/service/TimeServiceImpl.java package de.mindmatters.faces.quickstart.service; import java.util.Date; public class TimeServiceImpl implements TimeService { 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; public class UiBean implements InitializingBean { public void afterPropertiesSet() throws Exception { public String getShortDate() { public TimeService getTimeService() { public void setTimeService(TimeService timeService) { WEB-INF/faces-config.xml (部分) <managed-bean> 如上所示,uiBean是JSF管理的,而timeService则是由Spring管理的。这样,可以得到Spring的好处,即InitializingBean。 现在,建立一个简单的页面用以渲染当前日期: index.jsp <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 记住,这里访问该页面用/index.jsf,如果使用/或/index.jsp访问的话,请求将不能初FacesServlet接管,并会产生javax.servlet.jsp.JspException: Cannot find FacesContext错误。 |