`
chinajavawolf
  • 浏览: 116805 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

(A15)Tapestry Core:Application State

阅读更多

本文翻译出处 http://tapestry.apache.org/tapestry5/tapestry-core/guide/appstate.html

本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。

chinajavawolf

应用状态
通常有一种情况是,你有少量的数据需要跨越多个页面。也许你会创造一个多页向导, 或者你也许有一个对象,可以追踪使用者的曾经登录标识.
通常persistent page data不是适当的,因为持久化的字段域应用在一个特定页面不被共享给跨越页。
你可以用Application State Object (an ASO)应用状态对象代替。
使用一个ASO对象,值是被自动存储在页面外的,使用一个默认的存储机制,他被存储在session.
ASO对象是在一个字段域上标注ApplicationState
例如:
java 代码
  1. public class MyPage   
  2. {   
  3.  @ApplicationState  
  4.  private MyState _myState;   
  5.     
  6.  . . .   
  7. }  
任何声明了同一类型字段域的组件或页面,不管名字,只要使用了ApplicationState标注的就将共享同样的值。这就么简单。
对于Tapestry4用户,一个大的变化是在使用ASO对象前你不需要提供任何配置,也不用提供一个逻辑名。Tapestry5 使用类名来识别ASO,因此不需要一个逻辑名。
你第一次访问ASO时,他被自动创建,使用ASO类的默认构造器(公用的,无参的)
分配值给一个ASO字段将存储这个值。分配null值给ASO字段将删除ASO(正读的字段随后将强迫一个新的ASO实例被创建)。
检查Creation
可伸缩的Web应用不用必须创建服务端session.。如果你可以避免产生session,尤其是第一次访问你的web应用时,你将能控制更大量的用户。因此如果你能够避免创建ASO,你应该这么做
但是如何去避免产生他呢?仅是检查 ("_myState != null")也将强迫ASO的产物存进session内。
创造另一个字段来代替它。
 private boolean _myStateExists;
这个同伴字段被用来看ASO是否已经存在。他没有被标注。他通过名称查找("Exists”被附加在存储ASO字段域名后)。他必须是boolean类型并且必须是私有的实例变量。
持久化策略
每个ASO依照持久化策略被管理。默认的持久化策略是”session”。在session中存储ASOsSession必须被创建。
配置ASOs
通常,如果你需要从默认的持久化策略改变它你将配置一个。当前只有一个构建于策略内,但是更多的在将来就会提供了。
你将配置一个ASO使你可以控制它要如何被实例化. 当它被首次创建或实例化,你可能需要注入一些值给ASO。在这第二种情况下,你可以提供一个ApplicationStateCreator对象,他将被召唤创建ASO,这是必需的. 当你想要声明你的ASO时有个技巧是接口要优于类:你需要提供一个创造器类实现这个接口。
在你的应用模块里用tapestry.ApplicationStateManager去配制一个ASO
 
java 代码
  1. public void contributeApplicationStateManager(MappedConfiguration configuration)   
  2.  {   
  3.     ApplicationStateCreator creator = new ApplicationStateCreator()   
  4.     {   
  5.       public MyState create()   
  6.       {   
  7.         return new MyState(new Date());   
  8.       }   
  9.     };   
  10.     
  11.     configuration.add(MyState.classnew ApplicationStateContribution("session", creator));   
  12.  }   
这里,我们有一个ASO类型的MyState,并且我们提供了一个创造器给他。我们我们已经创造出一些通用的类型,但并非是必不可少的.
我们的创造器使用预备构造器利用当前的日期时间创造了一个新的MyState实例。
最后,我们创造了一个ApplicationStateContribution确定策略名和创造器,并提供这方面的配置
分享到:
评论
4 楼 milifan 2007-06-15  
感谢chinajavawolf
3 楼 chinajavawolf 2007-05-15  
谢谢大家的支持,时间有限,工作在身,翻译难免出现质量问题,不对的地方希望大家指出,共同进步,我会尽快翻译全部,希望能有更多的通过这份资料加入到Tapestry的阵营中.
2 楼 wingerd 2007-05-14  
楼主好人,深表感谢
1 楼 iRoyce 2007-05-13  
兄弟翻译的真快啊!!

看来我不用翻译了!!多谢!!!!

相关推荐

    tapestry5 build web application-alexander

    《Tapestry 5:构建Web应用程序》是关于Tapestry 5框架的一本权威指南。Tapestry 5是一个强大的Java Web应用框架,由Apache软件基金会开发并维护,它致力于提供一种更高效、更优雅的方式来构建动态、交互式的Web应用...

    Tapestry开发

    ### Tapestry开发知识点详解 #### 一、Tapestry简介及其背景 Tapestry是一种用于构建高度可伸缩且易于维护的Web应用程序的Java框架。它最初由Howard Lewis Ship开发,并于2000年发布。Tapestry的设计理念是为了...

    tapestry学习入门资料

    "tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...

    Tapestry.5.Building.Web.Applications.pdf

    《Tapestry 5.0:构建Web应用程序》是一份专为深入了解Tapestry 5.0框架而准备的详细指南。Tapestry是Apache软件基金会的一个开源项目,它提供了一种基于Java的声明式MVC(Model-View-Controller)框架,用于构建...

    tapestry源码 api等

    1. **Tapestry Core**: 这是Tapestry框架的基础部分,包含了核心组件、服务容器(Tapestry IoC)和页面生命周期管理。通过源码分析,我们可以理解其如何实现页面组件的渲染、事件处理和依赖注入。 2. **Tapestry ...

    Tapestry字典0.1.pdf

    ### Tapestry字典知识点概述 #### 一、基础知识 (Using Forms) **1.1 page文件和class文件联系** - **概念**: 在Tapestry中,`page`文件指的是页面定义文件,通常为HTML模板;而`class`文件则是Java类文件,用于...

    tapestry官方中文文档

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...

    tapestry-react:Apache Tapestry和React的集成

    挂毯React 将React( )与Tapestry( )一起使用。 该库提供了将Tapestry与JSX模板结合... define ( [ 't5/core/dom' , 'react' , 'react-dom' ] , function ( dom , React , ReactDOM ) { var HelloMessage = React

    apache-tapestry-5.3.8-bin.zip

    2. **Tapestry Core**:`tapestry-core-5.3.8.jar`是Tapestry框架的核心库,包含了框架的基础组件、服务和API。它提供了页面、组件、事件处理、URL映射等功能,是构建Tapestry应用的基础。 3. **Plastic**:`...

    深入浅出Tapestry

    资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...

    优化大使tapestry-bin-5.0.18.zip

    这个压缩包包含了多个以"Tapestry"开头的子文件,如 "tapestry-core", "tapestry-hibernate", "tapestry-ioc", "tapestry-upload", 和 "tapestry-spring",这些都是Tapestry框架的不同模块或插件。这些文件的后缀是...

    关于Tapestry的一些个人总结

    ### 关于Tapestry的一些个人总结 #### 一、Tapestry简介与核心特性 Tapestry是一个基于Servlet的框架,它可以运行在任何支持Servlet的容器(如Tomcat)或者包含Servlet容器的应用服务器(例如JBoss)之上。该框架...

    Tapestry5, Packt.Publishing.Tapestry.5.Building.Web.Applications.Jan.2008.RETAiL.eBOOk-sUppLeX.pdf

    ### Tapestry5:构建Web应用程序 #### 一、Tapestry5概述 Tapestry5是一种先进的、基于Java的Web开发框架,它以其强大的功能、灵活性以及易用性著称。该框架由Howard Lewis Ship创建,并由Apache软件基金会维护。...

    (Tapestry)An infrastructure for Fault-Tolerant Wide-area Location and Routing.ppt

    Tapestry是一个分布式系统基础设施,专门设计用于实现容错性的广域定位和路由。这个系统由Ben Y. Zhao、John Kubiatowicz和Anthony D. Joseph等人在加州大学伯克利分校的计算机科学部开发,旨在应对无处不在计算的...

    Tapestry简单入门.rar_java Tapestry_tapestry

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...

    tapestry-project-4.1.5

    《深入理解 Tapestry 4.1.5:项目实例与核心库解析》 Tapestry 是一个基于 Java 的开源Web 应用程序框架,它强调组件化开发,提供了一种强大的方式来构建动态、高性能的Web 应用。在"tapestry-project-4.1.5"这个...

    tapestry-cometd:基于 CometD 的 Tapestry5 推送库

    基于库 特征: 无需编写一行 Javascript 即可创建推送应用程序 完全可配置 使用设置传入消息的... xmlns : p = " tapestry:parameter " > <!-- type a chat message in this form --> < form t :

    Tapestry5.0.7

    - **tapestry-core**:Tapestry的核心库,包含了框架的主要功能和API。 - **tapestry-test**:测试支持模块,提供了针对Tapestry应用的单元测试和集成测试工具。 - **tapestry-spring**:Tapestry与Spring框架的...

Global site tag (gtag.js) - Google Analytics