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

(A14)Tapestry Core :Persistent Page Data

阅读更多

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

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

chinajavawolf

持久化的页面数据
大多数在Tapestry中的实例在每次请求最后都被自动清除。
这是重要的,因为这关系到Tapestry页面如何被池化和共享,随着时间的推移,被很多用户使用。
然而,你经常需要在页面里存储一些持久化数据,以便在下一个请求中访问。
使用Persist annotation.来完成。
这个标注应用于私有的实例属性。
 @Persist
 private int _value;
被标注的字段域将在请求之间存储他们的状态。一般来说,这意味着这个值被存储在session内。
无论何时你改变了持久化的字段域,他的值都被存储。
在稍后的请求里,这个持久化字段域的值从存储库中被重载。
持久化策略
每个字段域的值是有策略的在请求间存储的。
目前,只有默认值,“session”被支持。其他的实现,在客户端存储值,很快也会支持。
  •   Session策略
Session策略在session中存储字段域的变化;session必须被创建
使用是一个相称的长session属性名;这个名字组合了页面名,嵌套的组件id,字段域的名。
  •   flash策略
flash策略也在session中存储信息,但不会很久。值被存储在session中,当他们被第一次用来恢复页面状态时被从session中删除。
flash策略是常用来存储值给用户显示一次的临时数据。
持久化查询
Persist标注的默认值是个空值时,那么当前的策略被明确使用一个组件层次查询。
对于每个组件,元数据(meta-data)属性tapestry.persistence-strategy 被检查。这可以用Meta标注指定。
如果值非空,那么策略被使用。这允许一个组件可以控制使用持久策略在任何子组件中(没明确使用一个不同的策略)。
在一些时候,如果没有组件提供元数据。那么最后默认是使用session
默认值
对于其他的字段域,默认值可以被指定在内部或者在构造器内。
这个值被保留然后用来在每个请求的最后重置字段域的值,在这个页面被返回给页面池之前。
处理NULL值可是一个需要慎重对待的事,这是局限于基本的Servlet Api改变一个持久字段域的值为NULL,从session中删除字段的属性. 在稍后的请求,该字段域的值将重置为它的默认值. 因为通常是NULL,这不是一个问题... 它只有一个问题,如果一个字段域有一个非null默认值,可能会被改为Null.
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics