`
chinajavawolf
  • 浏览: 114825 次
  • 性别: 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  
兄弟翻译的真快啊!!

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

相关推荐

    关于Tapestry的一些个人总结

    Tapestry简述: Tapestry是一个servle的扩展,它运行于servlet容器(Tomcat)或包含servlet容器的服务器(如Jboss) 通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术即可, ...

    Tapestry 5 - Rapid web application development in Java

    Tapestry in action 作者最新作品,包含Tapestry 5.2

    深入浅出Tapestry

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

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

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

    tapestry-5:Apache Tapestry 5的镜像

    Tapestry是一个面向组件的Java Web应用程序框架,专注于性能和开发人员的生产力。 组件只是页面的可重用部分。 创建自己的组件非常容易,Tapestry附带了许多可以使用的组件(窗体,循环,选择,复选框,网格,...

    tapestry-react:Apache Tapestry和React的集成

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

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

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

    tapestry5 build web application-alexander

    tapestry5最新的书籍。pdf格式。原版。购买要几十刀呢!

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    Tapestry5最新中文入门实例教程

    从多方面来讲解 Tapestry应用,比如应用的页面导航(page navigation)、依赖性(dependency)和资源注入(resource injection)、用户输入验证(input validation)和应用状态管理(state management)。...

    tapestry官方中文文档

    Tapestry 4 官方文档中文版本,现在中文资料比较少,和大家共享一下

    tapestry 5.1.0.5 官方组件文档 天涯浪子

    来自:http://tapestry.apache.org/tapestry5.1/tapestry-core/ref

    tapestry-src-5.1.0.5.zip

    包含: tapestry 的源代码, tapestry集成spring2.0 tapestry快速启动 tapestry upload tapestry hibernate tapestry annotations

    tapestry 实例

    tapestry 实例tapestry 实例tapestry 实例tapestry 实例

    Tapestry5.0.16_API文档

    Tapestry5.0.16文档和大家一起学习

    Maven + Tapestry5.3.8 + Spring4.0.5 + Oracle10g

    这是Tapestry5.3.8 版本的一个大Demo,集合Spring4.0, 采用Maven 项目管理工具,没有集合Hibernate。 之所以说是个大Demo,是因为这项目中包含的内容并不少,包含: 1)解决了Tapestry5.3.8中文Bug问题 2)Tapestry...

    tapestry3开发指南,带tapestry3所有jar包

    tapestry3开发指南,带tapestry3所有jar包

    tapestry:验证和编辑小型真核基因组装配体

    挂毯Tapestry是一种使用长序列阅读来验证和编辑小型真核基因组装配体的工具。 它旨在帮助识别接近完整的基因组装配体中的完整染色体,共生体,单倍型,复杂特征和错误。 在上有预印本。 它已被用来验证染色体。 ...

    深入浅出tapestry

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

Global site tag (gtag.js) - Google Analytics