`
yanhua
  • 浏览: 88683 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

让Spring3.0代理JSF2.0的ViewScope

阅读更多

http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/

 

译注:作者Cagatay CiviciPrimeFaces 项目的创建者,也是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可以用同样的方式来实现。

 

 

 

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    jSF2.0与Spring整合实例+教程

    **JavaServer Faces 2.0 (JSF 2.0) 和 Spring 框架的整合教程** 在当今的企业级Web开发中,JSF 2.0 和 Spring 的结合使用非常常见,因为它们各自提供了独特的优势。JSF 是一个用于构建用户界面的组件模型框架,而 ...

    Mojarra JSF2.0库文件

    将Mojarra JSF 2.0库文件放置在Web应用的`WEB-INF/lib`目录下,是为了让应用服务器能够访问到这些库,从而支持JSF 2.0的功能。 **JSF 2.0的关键特性包括:** 1. ** faces-config.xml 配置文件简化** - 与之前的版本...

    jsf2.0版本helloworld

    本例中的"jsf2.0版本helloworld"就是一个基础的入门示例,旨在展示如何在MyEclipse环境中配置和运行一个简单的JSF应用。 **JSF 2.0的关键特性** 1. **Faces Flow**: JSF 2.0引入了Faces Flow,这是一种新的导航模型...

    JSF2.0源代码

    **JSF 2.0 源代码详解** JavaServer Faces (JSF) 是一个用于构建Web用户界面的Java框架,由Sun Microsystems(现已被Oracle收购)开发并维护。JSF 2.0是该框架的一个重要版本,它带来了许多改进和新特性,提升了...

    jsf 2.0 api和imp的jar包+源码包+doc

    JSF 2.0是其一个重要版本,带来了许多改进和新特性,使得开发更加高效且易于维护。这个压缩包包含了JSF 2.0的API jar包、实现库(即impl jar包)、源码以及doc帮助文档,为深入理解和学习JSF提供了全面的资源。 API...

    JSF2.0实战 - 6、TextBox

    在本篇中,我们将深入探讨JSF 2.0中的TextBox组件,它是用户界面中用于输入文本的基础元素。JSF(JavaServer Faces)是Oracle公司提供的一个用于构建Web应用程序的MVC框架,而JSF 2.0版本带来了许多改进和新特性,使...

    Spring_JPA_JSF2.0 示例

    综上所述,Spring_JPA_JSF2.0 示例演示了如何将Spring框架的依赖注入和事务管理能力,与JPA的ORM功能,以及JSF2.0的用户界面组件和处理机制结合,实现一个完整的CRUD应用。这样的组合为开发人员提供了一个高效且易于...

    JSF2.0标签手册

    JSF2.0标签手册DQSV

    jsf2.0实例

    文档《JSF2.0系列简介.doc》可能详细介绍了JSF 2.0的基础知识和实践指导,而压缩包中提供的源代码可能是为了演示如何在实际项目中使用JSF 2.0。这些示例可能涵盖了以下内容: - **创建基本的JSF页面**:展示如何...

    EJB3.0与EJB2.0的区别

    最后,EJB3.0在安全性、JPA(Java Persistence API)和JSF(JavaServer Faces)集成等方面都有所改进,进一步增强了其易用性和功能。 综上所述,EJB3.0确实带来了实质性的简化,它通过注解和依赖注入等机制降低了...

    JSF 2.0 (Mojarra 2.0.2-FCS)

    JSF 2.0是一个重要的版本更新,引入了许多改进和新特性,旨在提升开发效率和用户体验。Mojarra是JSF规范的主要实现之一,版本2.0.2-FCS(Final Candidate Release)是该版本的一个稳定版本。 1. **组件库增强**: ...

    JSF2.0实战 - 10、自定义Ajax更新方式

    综上所述,JSF 2.0中的自定义Ajax更新方式是一项重要的技能,它结合了JSF的声明式编程和Dojo的强大功能,让开发者能够创建出更加动态和交互性的用户界面。通过理解和实践这些知识点,你可以更有效地利用Ajax提升你的...

    jsf 2.0官方参考手册

    **JSF 2.0(JavaServer Faces 2.0)是Java EE 6平台上的一个关键组件,用于构建Web用户界面。它提供了一个模型-视图-控制器(MVC)框架,使得开发人员能够更高效地创建动态、数据驱动的Web应用程序。** **一、JSF...

    JSF.2.0.最新2010教程

    ### JSF 2.0 Cookbook 知识点详解 #### 一、JSF 2.0 概述 **JSF (JavaServer Faces)** 是Java平台标准的一部分,它是一种用于构建企业级Web应用的框架。JSF 2.0作为JSF的一个重大更新版本,在2010年发布,引入了...

    JSF 2.0 开发资料

    ### JSF 2.0 开发资料:详细解析与实用指南 #### 一、JSF 2.0 概览 JavaServer Faces (JSF) 2.0 是 Java 平台上的一种用于构建用户界面的标准组件框架。它作为 Java EE 的一部分,在 JSF 2.0 版本中进行了大量的...

    Jsf2.0 Refrence

    在"Jsf2.0 Reference"中,我们能够深入理解JSF的核心概念和技术,这包括但不限于以下几个方面: 1. **JSF生命周期**:JSF组件有其独特的生命周期,包括六种阶段:恢复视图、应用请求值、处理验证、更新模型值、调用...

    spring3.0MVC中文教材

    5. **JPA 2.0的支持**: Spring 3.0开始支持JPA 2.0,这使得持久层的开发变得更加便捷。 #### 三、Spring 3.0 MVC请求处理生命周期 1. **客户端发起HTTP请求**: 客户端通过HTTP协议向服务器发送请求。 2. **前端...

    JSF2.0_开发入门

    - Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6 - 由知名的作者和开发者 Marty Hall 授课。 - 可以根据需求选择不同的课程组合,如专注于特定技术...

Global site tag (gtag.js) - Google Analytics