tapestry页面跳转传值.ppt_第1页
tapestry页面跳转传值.ppt_第2页
tapestry页面跳转传值.ppt_第3页
tapestry页面跳转传值.ppt_第4页
tapestry页面跳转传值.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,作者:李金峰,TAPESTRY页面跳转传值,Persist传值1,接下来我以一个实际例子演示页面间的传值。这个例子中页面上有一个10位数字的链接,点击每位数字后,可以把这个数字值传到下一页显示。效果如图,Main.tml,Persist传值2,?,Main.java,4,Persist传值3,处为页面模版的链接,这里通过循环1到10个数字,形成十个链接,箭头所指即为页面显示。$index即为显示的数字,每循环一次一个数字值。它对应这页面类中getIndex()函数。t:context=prop:index就是页面类处的参数index值。点击链接上的数字10触发页面类处函数onActionFromSelect()-select与连接idselect对应。此时,框架会把t:context的值10设为这个函数的参数index。,4,4,Persist传值4,处Persist实现建立用户session。当页面跳转时,会把这个值设入session中。在函数onActionFromSelect()中的参数index的值10赋给了_selected,被保存到session中。处判断如果selected是刚刚被选中的值,就在此处显示,箭头所指即为显示。$selected即对应模版类中的getSelected()函数,因为这个值已经保存到session中,所以跳转后依然能取到。onActionFromSelect的返回值为空,所以仍会跳转到本页。这个函数还可以返回Object,Object指定要跳转的页面,点击后会跳转到Object页面。,Persist传值5,InjectPage跳转传值1,本例讲的是把一个页面注入到主页中,点击主页上的链接,跳入到注入页,并把参数传过去。本例中页面类及模版分别命名为Start.java和Start.tml;跳转目标页为Url.java和Url.tml.Start.java中用InjectPage注解把Url.java注入。Url.java中的两个函数voidonActivate(Stringmessage)和StringonPassivate()会在适当的时候执行,用来接收把取出传过来的值,InjectPage跳转传值2,Start.java,Start.tml,1,4,3,2,页面显示,5,5,InjectPage跳转传值3,1处指定跳转目标页Url。2处字符串row在跳转过程中由Start页被带入到Url页面3处页面模版中链接id为U,和页面类中的onActionFromU对应。当点击链接U,则会触发页面类中哦你ActionFromU(Stringsomething)函数,页面中的字符串循环从list中取出赋值给参数something.模版中链接的context属性的值会就为这一参数值,会被带入到Url中。4处把字符串放人list中,通过循环取出赋给something传人Url页面。5处list中储存的数据显示在页面上。,InjectPage跳转传值4,Start.java,Start.tml,1,4,3,2,页面显示,InjectPage跳转传值4,3和4处是目标跳转页(就是主页上标注InjectPage的页)中必须有的函数,跳转过程中会在适当的时候调用这个函数把传过来的值通过这两个函数传给页面类中的message属性。1处为传过来的message值在页面上的显示。2处为显示效果。,SSO传值1,本例中包括页面登陆类Login.java,页面登陆模版Login.tml.登陆成功类Success.java,登陆成功模版Success.tml.登录成功后会跳转到登陆成功页面。SSO(SessionStateObject)被保存在Session中,可以被同一用户的所有页面共享,但不会被其他用户共享。SSO在第一次访问的时候会被自动创建,给SSO赋值即可保存这个值。在Login页面,当输入的用户名是“ljf”而且密码是“ljf”,Tapestry会自动创建一个字符串类型的SSO,并把用户名保存在其中。然后就可以在Success页面显示这个用户名。,SSO传值2,Login.java,Success.tml,Login.tml,Success.java,1,2,3,4,5,SSO传值3,1处2处为登陆类和登陆模版相对应的用户名和密码。3处登陆类中的one和登陆成功类中的theUser上都标注了SessionState注释。这就是sessionstate对象。这里定义SSO时,使用了两个不同的变量名称one和theUser,但它们是同一个SSO.因为SSO只跟类型有关,而不管我们如何命名。如果我们要把两个同一类型的数据保存到SSO中,可以建一个包含这两个数据的类型。5处在登陆类Login.java中把username赋给了SSO变量中。在Success类中通过变量theUser把username取出,展示。,SSO传值4,组件呈现1,RenderingofcomponentsinTapestry5isbasedonastatemachineandaqueue(insteadofthetailrecursionusedinTapestry4).Thisbreakstherenderingprocessupintotinypiecesthatcaneasilybeimplementedoroverridden.Dontworry,inpractice,writingcomponentsrequiresabreathtakinglysmallamountofcode.以上是tapestry官方对组件呈现的解释,读起来有点抽象,不要紧,其实就是我们进入一个页面时,会自动执行一些有顺序的业务流程,以满足初始化的需求。,组件呈现2,每个橙色的阶段(SetupRender,BeginRender,BeforeRenderBody,等)与你类中一个或多个方法上放置的标注相对应。标注指示Tapestry调用你的方法作为那阶段的一部分。被这些标住标记的方法被称为呈现阶段方法。你的方法应该返回void或者返回一个boolean值。返回值能够强制阶段被跳过,或者可以被重新访问。在这个图里,实线显示的是正常的处理路径。当你的呈现阶段方法返回false而不是true或者void时,虚线代表的备用流将被触发。呈现阶段方法可以不带参数,或者带一个MarkupWriter类型的参数。方法可以是你愿意的任何可见度,通常使用包级私有,这样的可见度可以让你不用使组件方法为publicAPI就可以测试你的代码(同一个包)。,组件呈现3,这些方法是可选的,默认的行为是关联每一个阶段。大部分反映组件混合componentmixins的阶段也被加入到呈现阶段。几个阶段几乎专为混合而存在。一般,你的代码将用到SetupRender,BeginRender,AfterRender和CleanupRender阶段,通常是这些阶段中的一个或两个。下面是一个用来在两个值之间上下循环的组件源码,多次在他的body内呈现,并将当前的index值放入参数内。,RenderSupport,RenderSupport为页面渲染器,通过它可以向页面添加JS代码。因为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论