Tapestry学习四:Using Page Activation Context

三:Using Page Activation Context

  Tapestry5 有一个特殊的方式在两个页面间传值。首先,我们需要让这个页面“可激活”,其实就是增加两个方法:onActivate 和onPassivate。在HTTP 请求的生命周期的一个适当的时候Tapestry会调用这两个方法。这样就可以吧@Persist扔一边去了。

  为Another.java增加两个方法:

package com.packtpub.t5first.pages;

public class Another

{

private String passedMessage;

public String getPassedMessage()

{

return passedMessage;

}

public void setPassedMessage(String passedMessage)

{

this.passedMessage = passedMessage;

}

void onActivate(String message)

{

System.out.println("Another page is activated! The

message is: " + message);

this.passedMessage = message;

}

String onPassivate()

{

System.out.println("Another page is passivated...");

return passedMessage;

}

}

   执行结果:

    Setting the message: hi there!   

    Handling form submission!

    Another page is passivated...

    Another page is activated! The message is: hi there!

    在Start.java中,我们注入了一个Another page 并给它的message属性赋了值。然后我们要求Tepestry展示another page,就象我们前面看到的,通常会销毁这个message(或许是通过我们刚刚放回池里的实例传递的),并且展示了一个新的空的Another page实例,或许是刚刚从池中取出来的。然而,在把第一个实例放回池中之前,Tapestry通过执行onActivate and onPassivate这两个方法去判断Another page是不是在使用激活的上下文。因此Tapestry会调用onPassivate方法,就像这样问一样:“hey,Another page的的实例,有没有什么东东想让我帮你带给‘另一个’你页面的实例,去继续你的工作?”(Hey, instance of the Another page, is there anything you want me to pass to another instance of your page that will continue your work?).   

   可以从代码中看到,onpassivate方法将报告我们刚才set的message的内容,Tapestry会记得他的回答(注:也就是return的值?)。一旦它使用另一个Another page的实例,它将会在新的实例中作为onActivate 方法参数的形式传递这个储存的值。这样我们就能够看到message属性的值正确的展示在网页上。

   但是为什么Tapestry没有创建session却能记得message的值?看看URL:

   http://localhost:8080/t5first/another/hi+there%21

   当浏览器重定向到Another page的时候这个消息的值已经被记录在URL中,并且Tapestry在没有创建session的情况下可以检索出来。这就意味这,可以保存为书签,在任何时候都可以显示这个值。现在想象用这个还展示一个来自与在线目录的产品,你将会使用激活上下文中收益。

  注:这种方式有个致命的缺点,就是传递的参数会在地址看一览无余,对于安全性要求较高的应用,这种方式不适合。

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值