网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
TechWeb-技术社区


标题: [推荐] 初探下一代Web开发模式Tapestry
队长不是我
TW金牌会员
Rank: 6Rank: 6



UID 85672
精华 11
积分 1645
帖子 762
阅读权限 70
注册 2006-10-26
状态 离线
发表于 2008-7-29 09:39 资料 短消息 加为好友
其中userName这个属性是一个javaBean属性,通过get或set方法来存取userName的值,当然对于本例,property- specification这个元素和它一样,就是定义了一个javaBean的属性,其实你也可以像上例那样进行存取,而不需在 CustInfo.page中进行定义。定义property-specification元素的根本原因其实很可笑:为了偷一点懒! 为什么这么说呢?因为如果你用property-specification元素来定义javaBean的属性的话,那你在组件类中就不必实现其get或set方法了,只需用一个抽像方法来完成,至于真正的get或set方法的实现就由tapestry来代劳了,其中,Welcome这个类的代码如下:tech.techweb.com.cn9y#U'k5Q.L/X"V(H

6s/`"Y!V"a&@+ttech.techweb.com.cnWelcome.java5j*w$X)I'G9^2g0l8K
.I&l/`(L9k*n+]-J
package demo;程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛(U/G(y4A8D"n.m
import java.util.Date;程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛)\$G'h&A4T%X5Z
import org.apache.tapestry.IRequestCycle;
5M.H"U:?,i4S%BTechWeb-技术社区import org.apache.tapestry.html.BasePage;
)]+?#J U9R)t(PTechWeb-技术社区/@8[$G"S3{+B'P(}1P
public abstract class Welcome extends BasePage {
;Y*R){8|$H+c1fpublic abstract void setCustName(String custName);
&F!W7V9N)k8b:mtech.techweb.com.cnpublic abstract void setDob(Date dob);
0S6?(u;^4\0L+cpublic abstract String getCustName();
/I+[:s(a0~/?+d程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛public abstract Date getDob();
0G-~.K$o:I2ppublic void submit(IRequestCycle cycle) {
F#i"\0|._5f5U1_6^3h&|"d0[3U(~
if (getCustName() != null
'z!R)@"l5x/`*{tech.techweb.com.cn&& !getCustName().trim().equals("")tech.techweb.com.cn!t(F7I(U#p3O'q*D(A
&& getDob() != null) {程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛1z$F&V5t-|2U;g!q
Welcome welcome = (Welcome) cycle.getPage("Welcome");程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛*E:c!A3v1p3K0W
welcome.setCustName(getCustName());
5T*M-}.e&B9s9k.~welcome.setDob(getDob());
/V*`!x#l2q程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛cycle.activate(welcome);
(y4c9v*}0C:p$v"r程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛}
.G.l%F7F'K6ntech.techweb.com.cn}
0Z'm2d2M*d%s&T&s}6u:h;u c5F/h8\

:z&w5^9O:c0d3};I4d前面的几个抽像方法就不多说了,Welcome类的submit方法和在HTML模板中定义的@Form组件中的listener参数正好对应,也就是说,当用户按下提交按钮后,这个submit方法就会被激活,它进一步地引导着页面下一步的动作。在本例中它先检查用户名和用户出生日期(DOB, date of birthday的简称)是否为空,如果不为空,就将用户在页面中输入的值赋予Welocome这个类的custName和dob这两个属性,然后激活 welcome这个Page组件,也就是将页面跳转到welcome这个Page上去。
6N1y C"e;h)I'gTechWeb-技术社区
5s8B I;E/\9l:D#Q需要注意的是,Form组件定义的监听类方法必须为public,并且要带一个IRequestCycle 的参数,IrequestCycle是一个接口,它是由tapestry提供的一个对于用户而言,当前会话的一个管理工具。 N'G0t0y0u

(E"e&S6S5a9n'X6Ltech.techweb.com.cn总结程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛+x+}!a4V*n1t9T

'M$b4W6Z+t&p到目前为止,你大概明白了Tapestry的原理了,但是一个复杂的Tapestry应用还是要考虑到很多问题的,比如页面的定义,页面之间的流程,组件元素的持久性设计,与EJB或原有的JSP系统的集成等等问题,但是Tapestry都已经为你考虑好了,你甚至可以把它的源码下载下来仔细研究,也可以到它的邮件列表上发表自己的观点,这正是我所喜爱的----open source ! 它代表着自由!





我帖的视频全是转载,但是也很辛苦的,给点留言吧,做为辛苦费吧。。。我在这里感谢了
引用 回复 顶部
查看积分策略说明快速回复主题
选项 标题 Smilies
禁用 URL 识别
禁用 Smilies
禁用 Discuz!代码
使用匿名发帖
使用个人签名
接收新回复邮件通知
内容





当前时区 GMT+8, 现在时间是 2008-12-3 07:52
京ICP证060517号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2008 Comsenz Inc.
Processed in 0.020521 second(s), 7 queries

清除 Cookies - 联系我们 - TechWeb.com.cn - Archiver - WAP