Tapestry 会话缓存(@SessionState )导致串数据问题处理

如果再 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;

这样也是会串数据。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章