快速业务通道

WEB开发模式Tapestry简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
quo;。

这里有一个组件显得很特别:@Form组件,这个组件由于是隐式定义地,因此它的参数就直接在HTML模板中进行定义:listener="ognl:listeners.submit",它表示当用户按下submit按钮后页面流程会交给当前Page组件类(即Welcome这个类)的submit函数进行管理。

下面我们再看一下它的Page组件的定义:

CustInfo.page

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE page-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 3.0//EN" "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd"> <page-specification class="demo.Welcome"> <property-specification name="custName" type="java.lang.String"/> <property-specification name="dob" type="java.util.Date"/> <component id="custName" type="TextField"> <binding name="value" expression="custName"/> </component> <component id="dob" type="DatePicker"> <binding name="value" expression="dob"/> </component> </page-specification>

WEB开发模式Tapestry简介(6)

时间:2010-12-10

其中值得关注的是dob这个组件,它的类型是tapestry核心组件库中的DatePicker组件,有了它,我们就可以生成先前那个不可思义的选择日期的界面了。

这里出现了一个新面孔:property-specification元素,它是干什么用的呢?还是先让我们看一下那个“hello,world”例子中的组件类的定义吧:

Home.java

package demo; import org.apache.tapestry.html.BasePage; public class Home extends BasePage { private String userName = "Jack"; public String getUserName() { return this.userName; } }

其中userName这个属性是一个javaBean属性,通过get或set方法来存取userName的值,当然对于本例,property-specification这个元素和它一样,就是定义了一个javaBean的属性,其实你也可以像上例那样进行存取,而不需在CustInfo.page中进行定义。定义property-specification元素的根本原因其实很可笑:为了偷一点懒! 为什么这么说呢?因为如果你用property-specification元素来定义javaBean的属性的话,那你在组件类中就不必实现其get或set方法了,只需用一个抽像方法来完成,至于真正的get或set方法的实现就由tapestry来代劳了,其中,Welcome这个类的代码如下:

Welcome.java package demo; import java.util.Date; import org.apache.tapestry.IRequestCycle; import org.apache.tapestry.html.BasePage; public abstract class Welcome extends BasePage { public abstract void setCustName(String custName); public abstract void setDob(Date dob); public abstract String getCustName(); public abstract Date getDob(); public void submit(IRequestCycle cycle) { if (getCustName() != null && !getCustName().trim().equals("") && getDob() != null) { Welcome welcome = (Welcome) cycle.getPage("Welcome"); welcome.setCustName(getCustName()); welcome.setDob(getDob()); cycle.activate(welcome); } } }

前面的几个抽像方法就不多说了,Welcome类的submit方法和在HTML模板中定义的@Form组件中的listener参数正好对应,也就是说,当用户按下提交按钮后,这个submit方法就会被激

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号