用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
memoordit的公告
文章分类
存档

原创  Tapestry学习八:关于组件(三)Limiting Access to a Page 收藏

 
为了更有效率的去限制访问,我们可以用onActivate方法,这个方法在前面说use the page activation contex传值的时候说到过。这个方法在每次页面加载的时候都会被调用一次。如果在activation context中有值,那么可以通过参数的方式传到这个方法。任何访问这个页面的用户都将被验证。
 还记得在前面关于成功验证的例子吗(这个我没说,等下稍微说下),我们将USER作为一个ASO保存了起来,所以我们不管用户有没有验证通过,在他访问这个页面时我们只要去看这个USER作为ASO是不是存在。在showall.java中加入如下代码
@ApplicationState
private User user;
private boolean userExists;
Object onActivate()
{
if (!userExists) return Start.class;
return null;
}
(在这里是这个意思,如果一个对象被当作ASO,那么要判断这个对象是否在session中存在,只要在类中加入这个对象的属性名+Exists的一个布尔值属性,那么通过这个boolean属性就能判断session中是否有这个ASO了,在上面这个例子中,如果验证成功则在session中是有USER对性存在的,如果没有验证成功则没有,这里就是根据这个判断的;
onActivate()方法在这里就象个普通的事件处理一样去工作,但是它不是由用户提交的事件触发,而是由页面的加载的生命周期来触发的。如果返回值不为空,则它的返回值则被当成事件处理的返回值类型返回。
(注:事件处理有几种返回类型:
1nothing :返回值为void
2string:也就是页面的逻辑名,如前面的another secure/page
3:class:这是最好的一种方式,比如Another.class。用String以后逻辑名可能会变,但是类名比较稳定。
4page:象在最前面那样,用@injectpage注入后返回的
5LINK
6Stream:一个流,更具体的说StreamResponse对象,我们可以以二进制的方式输出PDF或者EXCEL文档。)
 
   如果返回值是null,那么就以为着当前的页面将会被显示。
   现在showall页面算是正常了,但是却没有任何的内容显示。接着来吧,还有更多的组件呢。

发表于 @ 2008年07月11日 15:37:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:Tapestry学习九:关于组件(四)Loop, Output and DirectLink | 新一篇:Tapestry学习十:关于组件(5)Another Use of PageLink Component

  • 发表评论
  • 评论内容:
  •  
Copyright © memoordit
Powered by CSDN Blog