Tapestry入门实例

 

今天开始接触到Tapestry框架,用的是Tapestry3.03包(MyEclipse tapstry插件),开发环境是EclipseWeb服务器用的是Weblogic。参照的教程是《享受TapestryWeb开发带来的乐趣》,果然它不辱使命,给我带来了无限的“乐趣”。

可能教程上用的是Tapestry4,而我使用的是Tapestry3的缘故吧,好象高版本是有了很多新功能,我完全找着教程上抄一个例子,搞了半天才看到一个“Hello John”。原因就是遇到了好多版本34不兼容的问题一样,不知道各位大侠有何高见。

首先就是,在page文件里,一使用ognl前缀,就要报错,听作者Ka Iok 'Kent' Tong说,page文件中默认使用ognl语言,而html文件中则不是,但不是说page文件里就不能使用ognl语言,例如他也使用了,而且也没错啊

第二就是page文件的dtd好像是变了吧,有的属性加进去就不合法,比如作者用的就是<binding name=”value” value=”ognl:greetingSubject”>,而我只能使用<binding name=”value” expression=”greetingSubject”>

第三就是使用<form jwcid=”@Form” listener=”listener:onOk”>,老是不能把监听器注册给Page对象的onOk方法,非要我使用<form jwcid=”@Form” listener=”ognl:listeners.onOk”>

Page文件里不能注入组件,比如页面,作者就使用<inject property=”resultPage” type=”page” object=”Result”>page文件中注入一个页面,而3版本的page文件不支持inject元素。

第四,在BasePage的子类里也不支持注入对象的语法,如:

public abstract class Home extends BasePage{

     //注意哦,下面这一句可不是注释,而是注入对象的语法哦,Result必须是已经注//册过的面对象的名称。

          @InjectPage(“Resul”)

          public abstract Result getResultPage();

}

第四,监听方法只能返回void,一返回其他类型,就好像没了作用,例如,我可以如下定义onOk方法,将用户导向Result指定的页面:

public void onOk(IRequestCycle cycle) {

       int stockValue = stockId.hashCode() % 100;

        //从页面池中取出Result页面来

       Result resultPage = (Result) cycle.getPage("Result");

        //重设页面对象

       resultPage.setStockValue(stockValue);

        //激活Result,将用户导向Result页面

        cycle.activate(resultPage);

    }

这样是可以的,而作者使用的是另一种方法,直接用onOk方法返回页面:

public IPage onOk(IRequestCycle cycle) {

    //public void onOk(IRequestCycle cycle) {

       int stockValue = stockId.hashCode() % 100;

       Result resultPage = (Result) cycle.getPage("Result");

       resultPage.setStockValue(stockValue);

       return resultPage;

       //cycle.activate(resultPage);

    }

按照作者的做法,也应该是对的,毕竟别个是出了书的嘛,我想也应该没问题,作者可以而我这样写就报错,应该不是人品问题吧,我还是认为它是Tapestry的版本问题,哎,呵呵,真没办法,菜鸟就是这样啊,

最后恳请各位高手批评指正一下,问题究竟在哪儿?搞得我如此郁闷。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值