http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/
译注:作者Cagatay Civici
是PrimeFaces
项目的创建者,也是MyFaces
的重要开发人员,他还是JSF2.0标准(JSR314)
的专家组成员之一,对JSF有在非常丰富的经验。
如果你正在使用JSF和Spring并且打算升级到JSF 2.0,或许你乐意去使用JSF2.0内建的viewscope。Spring不支持这个scope,因为它是特定于JSF2.0规范的。不过不用担心,使用Spring的自定义scope功能可以代理JSF2.0的viewscope,使其成为一个Spring bean的scope。
package org.primefaces.spring.scope;
import java.util.Map;
import javax.faces.context.FacesContext;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.Scope;
blic class ViewScope implements Scope {
public Object get(String name, ObjectFactory objectFactory) {
Map<String,Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
if(viewMap.containsKey(name)) {
return viewMap.get(name);
} else {
Object object = objectFactory.getObject();
viewMap.put(name, object);
return object;
}
}
public Object remove(String name) {
return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);
}
public String getConversationId() {
return null;
}
public void registerDestructionCallback(String name, Runnable callback) {
//Not supported
}
public Object resolveContextualObject(String key) {
return null;
}
}
然后再Spring中注册这个自定义的scope:
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
<property name="scopes">
<map>
<entry key="view">
<bean class="org.primefaces.spring.scope.ViewScope"/>
</entry>
</map>
</property>
</bean>
现在就可以使用Spring的bean作为JSF的ViewScope的ManagedBean了。做一个例子测试一下,假设有一个简单的计数器页面,每点击一下计数器就随之增加。只要你待在这个页面,计数器的状态就被保持,直到你离开这个页面,计数器才被销毁。如果重新访问这个页面的话,计数器将重新开始。
package org.primefaces.spring.view;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("view")
public class CounterBean {
private int counter = 0;
public int getCounter() {
return counter;
}
public void setCounter(int counter) {
this.counter = counter;
}
public void increment() {
counter++;
}
}
<h:form>
<h:outputText id="counter" value="#{counterBean.counter}" />
<p:commandButton value="Count" actionListener="#{counterBean.increment}" update="counter"/>
</h:form>
让Spring提供JSF可以使用的ViewScope的backing beans,你可以享受到Spring容器提供的好处,同时也可以使用这个很方便的scope。对于JSF2.0中的FlashScope可以用同样的方式来实现。
分享到:
相关推荐
**JavaServer Faces 2.0 (JSF 2.0) 和 Spring 框架的整合教程** 在当今的企业级Web开发中,JSF 2.0 和 Spring 的结合使用非常常见,因为它们各自提供了独特的优势。JSF 是一个用于构建用户界面的组件模型框架,而 ...
将Mojarra JSF 2.0库文件放置在Web应用的`WEB-INF/lib`目录下,是为了让应用服务器能够访问到这些库,从而支持JSF 2.0的功能。 **JSF 2.0的关键特性包括:** 1. ** faces-config.xml 配置文件简化** - 与之前的版本...
本例中的"jsf2.0版本helloworld"就是一个基础的入门示例,旨在展示如何在MyEclipse环境中配置和运行一个简单的JSF应用。 **JSF 2.0的关键特性** 1. **Faces Flow**: JSF 2.0引入了Faces Flow,这是一种新的导航模型...
**JSF 2.0 源代码详解** JavaServer Faces (JSF) 是一个用于构建Web用户界面的Java框架,由Sun Microsystems(现已被Oracle收购)开发并维护。JSF 2.0是该框架的一个重要版本,它带来了许多改进和新特性,提升了...
JSF 2.0是其一个重要版本,带来了许多改进和新特性,使得开发更加高效且易于维护。这个压缩包包含了JSF 2.0的API jar包、实现库(即impl jar包)、源码以及doc帮助文档,为深入理解和学习JSF提供了全面的资源。 API...
在本篇中,我们将深入探讨JSF 2.0中的TextBox组件,它是用户界面中用于输入文本的基础元素。JSF(JavaServer Faces)是Oracle公司提供的一个用于构建Web应用程序的MVC框架,而JSF 2.0版本带来了许多改进和新特性,使...
综上所述,Spring_JPA_JSF2.0 示例演示了如何将Spring框架的依赖注入和事务管理能力,与JPA的ORM功能,以及JSF2.0的用户界面组件和处理机制结合,实现一个完整的CRUD应用。这样的组合为开发人员提供了一个高效且易于...
JSF2.0标签手册DQSV
文档《JSF2.0系列简介.doc》可能详细介绍了JSF 2.0的基础知识和实践指导,而压缩包中提供的源代码可能是为了演示如何在实际项目中使用JSF 2.0。这些示例可能涵盖了以下内容: - **创建基本的JSF页面**:展示如何...
最后,EJB3.0在安全性、JPA(Java Persistence API)和JSF(JavaServer Faces)集成等方面都有所改进,进一步增强了其易用性和功能。 综上所述,EJB3.0确实带来了实质性的简化,它通过注解和依赖注入等机制降低了...
JSF 2.0是一个重要的版本更新,引入了许多改进和新特性,旨在提升开发效率和用户体验。Mojarra是JSF规范的主要实现之一,版本2.0.2-FCS(Final Candidate Release)是该版本的一个稳定版本。 1. **组件库增强**: ...
综上所述,JSF 2.0中的自定义Ajax更新方式是一项重要的技能,它结合了JSF的声明式编程和Dojo的强大功能,让开发者能够创建出更加动态和交互性的用户界面。通过理解和实践这些知识点,你可以更有效地利用Ajax提升你的...
**JSF 2.0(JavaServer Faces 2.0)是Java EE 6平台上的一个关键组件,用于构建Web用户界面。它提供了一个模型-视图-控制器(MVC)框架,使得开发人员能够更高效地创建动态、数据驱动的Web应用程序。** **一、JSF...
### JSF 2.0 Cookbook 知识点详解 #### 一、JSF 2.0 概述 **JSF (JavaServer Faces)** 是Java平台标准的一部分,它是一种用于构建企业级Web应用的框架。JSF 2.0作为JSF的一个重大更新版本,在2010年发布,引入了...
### JSF 2.0 开发资料:详细解析与实用指南 #### 一、JSF 2.0 概览 JavaServer Faces (JSF) 2.0 是 Java 平台上的一种用于构建用户界面的标准组件框架。它作为 Java EE 的一部分,在 JSF 2.0 版本中进行了大量的...
在"Jsf2.0 Reference"中,我们能够深入理解JSF的核心概念和技术,这包括但不限于以下几个方面: 1. **JSF生命周期**:JSF组件有其独特的生命周期,包括六种阶段:恢复视图、应用请求值、处理验证、更新模型值、调用...
5. **JPA 2.0的支持**: Spring 3.0开始支持JPA 2.0,这使得持久层的开发变得更加便捷。 #### 三、Spring 3.0 MVC请求处理生命周期 1. **客户端发起HTTP请求**: 客户端通过HTTP协议向服务器发送请求。 2. **前端...
- Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6 - 由知名的作者和开发者 Marty Hall 授课。 - 可以根据需求选择不同的课程组合,如专注于特定技术...