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