如果再 tapestry 中想实现页面数据共享,那么可以采用 SSO , SSO 主要用 @SessionState 进行描述 。
SessionState的创建与消除:
http://blog.csdn.net/logyina/article/details/5970984
最近参与使用T5框架的项目,在开发过程中,发现在同一个浏览器中打开多个页签时,经常是当前页面中,会显示另一个页签中的数据。显示出来的数据还好,看见了就知道是有问题,可有时是隐藏的数据发生了改变。
后面经查证是@SessionState标注导致。
原因是在好多的页面类文件中使用到了BoeBase对象。如下:
@SessionState
private BoeBase boeBase;
开发时,为了将上一页面数据传到下一页面,就使用了SesseionState注解。使用了这个比再次去数据库查询的确是快了许多。所以在项目是大量使用了。
可交与客户之后,他们的使用时经常开多个页签。数据是各种串,在页面上提交之后,数据乱得没法使用。查问题怎么也查不出来。
解决方法就是,能不用@SessionState的就去掉,改为@Persist 。当页面加载时去数据库查询
@Persist
private BoeBase boeBase;
注意此处不能改为:
private BoeBase boeBase;
这样也是会串数据。