Tapestry的函数的执行顺序 [转]


Tapestry的函数的执行顺序 [转] <script type="text/javascript">var stattitle='Tapestry的函数的执行顺序 [转]';</script>

对之前的该文章进行了一些修正,主要是针对finishLoad()方法。

我觉得对初学者会有一些帮助。

下面这几个函数是我在使用的,它们的执行顺序依次从上到下。


1.protected void finishLoad() {}  ***

2.public void pageValidate(PageEvent event) {}

3.public void activateExternalPage(Object[] parameters, IRequestCycle cycle) {}

4.public void pageBeginRender(PageEvent event) {}

   // 如果有表单提交,则将form中的各字段的值赋给页面类
5.   ...... 赋值

6.public void submit() // 表单提交等用listenter:调用的方法

7.protected void prepareForRender(IRequestCycle cycle) {}

----------------------------------------------------

1.protected void finishLoad() {}
   这个函数最先执行,但是它实际上没有什么用处(我感觉)。因为:
这个函数只在页面池中没有某一个页面类、需要生成一个新的页面对象时才调用。这里就有一个陷阱:如果你的tomcat启动时使用了- Dorg.apache.tapestry.disable-caching=true(为了调试方便而设),那么你每次刷新页面时,它都会执行(因为每 个request都会新生成一个页面类对象),造成了它总是执行的假象。在实际的部署时,会使用caching,则这个函数执行的机会很少。所以要注意。
初始化的代码放在4 pageBeginRender()中

2.public void pageValidate(PageEvent event) {}
    如果实现了PageValidateListener接口,则可以在这里进行验证,比如访问权限等。执行完1后,它就开始执行。

3.public void activateExternalPage(Object[] parameters, IRequestCycle cycle) {}
    如果实现了IExternalPage接口,则可以从这里取得由外面传过来的参数。执行2后,执行到这里。在这里可以把那些参数取出,赋给页面类。

4.public void pageBeginRender(PageEvent event) {}
    执行完3后,将执行本函数。但是这时从客户端传过来的参数还没有被赋值(如果提交了表单的话)。这里可以进行一些初始化操作。

5.执行完4后,如果有表单提交,在这里将会取出那些值,赋给对应的字段。(注意:只是将表单中有的值赋过来)

6.public void submit()
    如果有表单提交的话,在这里将进行对应的操作。因为此时各字段已经取好值了,所以可以拿来直接用。

7.protected void prepareForRender(IRequestCycle cycle) {}
    最后才执行这个方法。我们可以在其中进行为了在页面上显示数据而进行的操作,比如取得什么对象什么的,因为这里页面类的属性赋值已经结束,可以直接拿来使用了。
    注意:如果执行了6,则还要执行4,再执行7。如果没有6,4完了就直接是7。


以上是我所总结的执行顺序,不当之处请指出。

-----------------------------------------------------

最 开始学tapestry的时候,觉得“怎么有这么多地方需要持久啊”。原来以前只知道pageBeginRender这个函数,什么初始化操作都放在它里 面。可是它是在赋值之前执行,所以拿到的字段多都是空的,却都以为是没有持久化的缘故。所以在客户端里放了一大堆的@Hidden,或者session中 持久,非常麻烦,,,对tapestry也产生的怀疑。现在才知道那些需要取得客户端传来的参数的代码,最好放在prepareForRender里,很 多不必要的持久都可以省掉了。
深入解析ROS 2 Control:从硬件抽象到实时控制的机器人框架实践 本文深入解析了ROS 2 Control机器人控制框架,阐述了其如何通过硬件抽象、控制器管理和实时性保障,解决机器人开发中硬件与软件紧耦合的痛点。文章详细剖析了其三层核心架构与数据流,并通过C++/Python代码示例演示了硬件接口的实现,最后提供了URDF配置、启动文件编写指南以及动态控制器管理、实时优化等高级应用与实战避坑技巧。 阅读详情

相关推荐

基于单片机自行车码表控制系统设计

*单片机设计介绍,基于单片机自行车码表控制系统设计。

QQ2193276455的博客 1487

Tapestry学习笔记——页面浏览的处理流程

以下是在学习Enjoying Web Development with Tapestry的时候所做的个人笔记,如需转载,请注明出处!在使用Tapestry这个框架的时候,一般需要以下3个文件:1、.class文件2、.html模板文件3、.page定义组件文件其中,Home.class代码如下:package net.vicp.oceann.tapestry;import org.apache.t

启航 947

亚马逊(Amazon ads)广告API申请步骤(已经更新完)

你如果是自己的店铺使用,就选择左边的、如果是授权的那种给别人用就选右边的。审核通过了才能进行下一步,我目前就是刚申请完,后续会持续更新!然后会调整到,下面的页面,选择Agency然后右上角点击创建。审核通过会发邮件到你的企业邮箱、时间大概是1-7天左右。输入对应的信息,点击提交审核,就可以开始申请了。1、广告平台跟卖家平台是分开的,这个概念要清楚。2、注册广告一定要用企业邮箱!回到首页,点击成为合作伙伴。注册了以后会跳转到广告。然后再点击加入合作伙伴。然后会弹出下面的页面。

阿泽的博客 5655

Tapestry使用示例及注意点总结

例子中源码包的结构:

Harold的专栏 1472

硬件电路(22)-TTL和232切换电路

工作中会遇到TTL和232电平的通信的状态,为了实现一种便捷的切换方式,参考了一些文章,提供一种电路方便大家使用。

剑藏锋的博客 1862

001-基础入门-Web演示源码&资源&工具箱等

小迪安全2023笔记

wushangyu32335的博客 4260

Tapestry的启动流程

1.启动应用服务器如Oracle-Weblogic或Apache-Tomcat,加载部署的WEB应用。 2.WEB应用寻找部署描述符(web.xml),做为程序运行的入口,并加载servlet、filter、session的一些配置。 3.客户端提交访问路径发起请求到服务器端,服务器端在web.xml中寻找到客户端访问的Servlet,由于配置了filter,访问的根路径会定位...

sshzhangwg的专栏 274

比亚迪开放平台接口实战:车身状态监测与智能车联应用开发

本文详细介绍了如何利用比亚迪开放平台的车身状态接口进行智能车联应用开发。通过核心类BYDAutoBodyworkDevice,开发者可以安全获取车辆VIN、车门车窗状态、蓄电池电压、方向盘转角等实时数据,并利用监听器实现状态实时响应。文章提供了从SDK集成、接口调用到典型应用场景(如远程车况检查、车队管理)的完整实战指南,助力开发者快速构建基于比亚迪车辆数据的创新应用。

weixin_29176179的博客 717

Tapestry的函数执行顺序[转]

1、protected void finishLoad() {}     这个函数最先执行,它只在页面池中,没有某一个页面类、需要生成一个新的页面对象时才调用。这里就有一个陷阱:如果tomcat启动时使用了-Dorg.apache.tapestry.disable-caching=true(为了调试方便而设),那么每次刷新页面时,它都会执行(因为每个request都会新生成一个页面类对象),造成了...

神#儿童 212

快速上手springboot+vue的前后端分离项目

使用webStorm新建项目后,把 .lock文件删除后项目运行才不报错,配置文件 vue.config.js 中加入 lintOnSave: false 关闭eslint语法检测。在多层嵌套的父子组件之间传递状态已经十分麻烦,而Vue更是没有为兄弟组件提供直接共享数据的办法。基于这个问题,许多框架提供了解决方案——使用全局的状态管理器,将所有分散的共享数据交由状态管理器保管,Vue也不例外。其中一种解决CORS 的方法, 在springboot项目中跨域的方法或类加上@CrossOrigin注解。

m0_61950264的博客 1905

基于STM32L4XX、HAL库的BQ27520YZFR-G4 电量监测计驱动程序设计

(可选) -------- TS (Pin 3) 连接温度传感器。(可选) -------- BAT (Pin 2) 连接电池正极。// 假设I2C1已初始化。// 每5秒更新一次。// 短暂延时确保数据准备好。支持Impedance Track™技术,提供高精度电量测量。适用于便携式设备如智能手机、平板电脑等。// 可添加初始化验证代码。// 初始化BQ27520。// 发送控制子命令。// 配置模拟滤波器。// 配置数字滤波器。// I2C1初始化函数。

zhusl6688的博客 244

Tapestry学习中一点总结

对之前的该文章进行了一些修正,主要是针对finishLoad()方法。 我觉得对初学者会有一些帮助。 下面这几个函数是我在使用的,它们的执行顺序依次从上到下。 1.protected void finishLoad() {} *** 2.public void pageValidate(PageEvent event) {} 3.public void activateExternalPage(O

LifeNote 580

基于matlab目标雷达横截面建模(附源码)

雷达系统依靠目标反射或散射来检测和识别目标。目标反射越强,雷达接收器返回的回波就越大,从而获得更高的信噪比(SNR)和更高的检测可能性。在雷达系统中,从目标反射的能量由雷达横截面(RCS)决定,定义为sigma代表RCS,R是雷达与目标之间的距离,Es是从目标反射的信号的场强,以及Ei是入射到目标上的信号的场强。通常,目标向各个方向散射能量,RCS是入射角,散射角和信号频率的函数。RCS 取决于目标的形状和构建目标的材料。用于RCS的常用单位包括平方米或dBsm。

珞瑜的博客 3083

tapestry组件

首先tapestry组件最基本的是由三个文件组成:Html,page,java文件 Html页面是前台,java就是后台逻辑,page文件就是将前台与后台联系起来的配置文件。这里的组件大部分只在html页面中直接写就可以用。部分需要在page文件中配置。(下面例子中的html页面,page页面,java代码就是指这以上三个文件)。   1) DirectLink 组件        超连

xiaogezhuifengren的专栏 6373

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

再谈tapestry-delegate——优化与重构

这段时间我对tapestry-delegate这个用于改进Tapestry 的"listener:"绑定的扩展开源包做了一次较大的调整和改进,使这个包在使用的灵活性和性能方面有了不少的提高。除了使用字节码生成技术来提高最终函数调用的效率外,还在多个候选函数的选择,类型的匹配,冗余函数的清理等方面做了改进。现在这个包可以支持如下几种使用的格式: 模糊格式:"delegate:doSub

MindHawk 1631

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

编写tapestry页面时碰到的问题集锦

popup window如何做? 在服务器端如何输出javascript代码? iframe如何实现?    其它已解决的问题:could not found adapator for class com.... java.lang.IllegalArgumentException 原因是类需要serializable 序列化 经典问题:java.lang.ClassC

清风 1242

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Tapestry总架构

Tapestry总架构 原文:http://bilang.rocklv.net/Tapestry.htmlTapestry 开发调试 禁止缓存参数 -Dorg.apache.tapestry.disable-caching=true -Dorg.apache.tapestry.enable-reset-service=true 调试参数 set JAVA_OPTS="-Dorg.apache.

truddysnow的专栏 1554

Tapestry灵魂——字节码生成

    Tapestry最大的的一个特点就是通过字节码生成在运行时动态的创建页面的实例。这也是整个框架能有如此活力的基础。通过运行时的代码生成不仅使说明(specification),模板(template)和类结合起来形成一个统一的整体,更主要的是使程序员得到了极大的解放。所有重复性的,易出错的烦琐工作都有框架负责,动态的将必须的信息赋给页面。程序员需要的仅仅是关心一些最为基本的设置。    T

MindHawk 2119

tapestry常用组件使用

[code="..."] 1、For source:是对应的java类里的List 对象或者是个数组 需要抽象 或者提供set get方法 value:是循环这个source对象代表当前的一个 ,需要在page文件中设置问一个属性,可以不在对应的java类里有这个属性 index:是循环的索引值 同value一样 在page文件中设置一个属性即可 在循环的时候 会自动为vlaue和in...

赵子龙||zbb 771

Tapestry学习一 环境搭建及HelloWorld应用

学习顺序参照Enjoying Web Development with Tapestry此书,本人有此书的全部,有需要着请在此处留下邮箱!第一章          Tapestry开发环境搭建1 用到的开发工具和软件包:开发工具:    JDK 1.5    java.sun.com Tomcat5.5 jakarta.apache.orgEclipse 3.1 www.e

Jack Wu 4028

JAVA技术:Tapestry组件使用总结

2008-4-22   关键字: Link类组件     Tapestry总共有6种标准的link组件:     GenericLink, ActionLink, DirectLink,ServiceLink, ExternalLink和PageLink     *disabled参数 公有参数,disabled=true时,链接不可用     A) GenericLink 组件     e.g

dainiao01的专栏 1066

Tapestry4.0笔记

Tapestry 页面对象 在page文件中声明属性,可以不必在java文件中声明以及其get、set方法 t4默认getXXX()抽象方法中的XXX为页面属性,.page不用声明,并使用@InitialValue("value")赋初值. 页面对象实例会被缓存(有潜在非法访问问题),解决方法: 覆盖initialize()方法,初始化实例变量。(在放入缓存池时天会调用initial

lili_zhao的专栏 609

Tapestry - 页面加载之一

1.      页面查找a)        说明:在Tapestry当中,由于我们主要用到的是PageService,所以这里的流程和代码都是参考的PageService。我们根据之前的解释,得到当前要显示的页面名称。首先从缓存当中查找页面是否被加载了。 b)        流程图:<v:shapetype id="_x0000_t75"coordsize="21600,2

技术源于生活 2845

Friendly URLs in Tapestry

document.location.href="http://blog.youkuaiyun.com/mindhawk/archive/2006/12/16/1445005.aspx";     在早一点的版本里面Tapestry并没有采用幽雅的格式来产生URLs。这种格式的URLs带来了不少的问题。比方说,因为整个连接都是围绕一个servlet构造的,所以势必会使基于路径的申明式J2EE安全机制不能

MindHawk的专栏 1137
上一篇: Tapestry的service
下一篇: 一个yale-cas实现单点登录的简单例子实现(转)
flyingjava
博客等级 码龄20年 9粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值