云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Tapestry最新版5.1.0.5教程(二)续

Posted on 2009-06-03 17:17 云自无心水自闲 阅读(2227) 评论(2)  编辑  收藏 所属分类: Java心得体会Tapestry
1、在Tapestry中,页面称之为页面模板(Page Template)。Tapestry的页面模板必须是一个Well Formed Xml,需要引入Tapestry的Xml命名空间才能使用Tapestry的组件。示例:<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
2、在页面模板中可以使用表达式来获取变量的值。这种表达式在Tapestry中称之为:Expansion。
3、在前一篇文章中已经说过,一个页面模板必须有一个对应的Java类。在Tapestry中最基本的Expansion就是一个Java类的属性。比如:${userName}这就是一个在可以在页面模板中使用的Expansion,为了正确的显示用户名,必须在Java类中有一个对应的public String getUserName()这样一个方法。注意:是一个getter方法,而不必需是public String userName,实际上,如果没有userName这个属性,而只有getUserName这个方法,应用将能正确运行。
4、Expansion是不区分大小写的,也就是说${userName}和${UserName}是等价的。
5、使用Expansion,我们不仅可以显示Java类的属性,而且可以显示该属性的属性,比如Java类有一个日期型属性public Date getBirthday();那么,在页面模板中就可以这样使用:${birthday.time},相当于调用getBirthday().getTime()
6、也可以显示地调用非getter方法:比如:${birthday.hashCode()},Tapestry5.1开始,可以将属性作为函数调用的参数了。
7、可以使用?.来调用方法:比如:${birthday?.time},这样即使birthday是null,页面也不会报错。
8、Tapestry的Expansion是会编译时生成class文件的,而不是在运行时使用反射来取值的。Tapestry的作者认为这是Tapestry性能优于Struts2的可能(注意:Howard Lewis Ship也只是猜测)原因之一。
9、Tapestry的Expansion使用的几个说明:
        a、Expansion旁边的空白是会被忽略的
        b、整数和小数前面可以使用负号
        c、常数都是使用十进制的。
        d、字符串需要使用单引号
        e、可以使用..来表示一个范围,比如:1..5,表示1到5


评论

# re: Tapestry最新版5.1.0.5教程(二)续  回复  更多评论   

2009-06-04 09:56 by 一农
看Tapestry的书时,上面有一段是说,Tapestry是java的未来之类的,现在我愈加感觉不到这一点。而实际情况好像也是struts2和jsf现在热闹一点。

# re: Tapestry最新版5.1.0.5教程(二)续  回复  更多评论   

2009-06-04 17:47 by usherlight
Tapestry是Java的未来,那是有点言过其实了,但是Tapestry和JSF还是有类似之处的,都是基于组件式的Web框架。但是Struts2借着Struts的名头,使用人数确实众多,而且也颇有其独到之处。
我个人认为Tapestry最大的问题在于文档,有人曾经说过,如果要比较两项技术的好差,只要看Amazon网站的书籍多少就知道了。
由此可知,文档的重要性。

只有注册用户登录后才能发表评论。


网站导航: