Posted on 2009-05-31 20:31
云自无心水自闲 阅读(2997)
评论(0) 编辑 收藏 所属分类:
Java 、
心得体会 、
Tapestry
1、Start.tml和Start.java
Tapestry不需要在Web.xml中配置welcome页面,也是使用约定大于配置的方式,默认的起始页面就是在pages目录下的Start。Tapestry中的页面由两部分组成:一个Java类和一个相同名字的模板文件(类似于jsp,Tapestry中的后缀名为:tml)。其中Java类是必须的,就算是没有任何代码,也必须要生成一个空类。tml模板在大多数情况下也是需要的,少数情况比如返回二进制流的话,可以不需要。
tml模板文件可以放在webroot目录下,也可以和Java类一直放在src目录下。
2、页面的跳转(可以用于指定跳转页面的东西:) @InjectPage
在Tapestry中,页面的跳转和Struts之类的框架是不同的,Struts的做法是Action返回一个字符串,Struts在xml配置文件中进行搜索匹配,决定跳转的页面。而Tapestry没有类似的配置文件,它的做法是在当前页中引用跳转页面。比如:想从Start跳转到Register页面的话,需要在Start中注入Register页面。示例代码如下:
Class Start{
@InjectPage
private Register register;
Object onSubmit() {
return register;
}
}
其中值得注意的是:onSubmit的修饰符并不是常见的public,而是缺省级别(或者说是package级别),这是Tapestry推荐的做法。第一,比public级别低,这样的话,页面类的事件处理函数没有被公开,不是其他所有的人都能随便调用。第二,比private级别高,这样如果测试需要的话,可以把测试类放在同一个package里,方便测试的进行。
在Tapestry的事件处理函数中可以有6种方式指定跳转的页面
a、什么也不返回,也就是返回类型是void,这样的话,页面不跳转,只是刷新当前页面
b、字符串。Tapestry会查找与该字符串对应的类
c、类。一般来说是一个Page类,这种方式比返回类名(字符串)要好,因为这样的话,在类重命名后,程序不会出错。
d、Page实例,
e、Link,
f、流(Stream),比如返回pdf或者Excel文件。
3、Tapstry页面中的表达式
类似于jsp中<%= 变量名%>这样的写法,Tapestry的语法是${变量名},其中变量名是需要在页面对应的Java类中有get方法的。