Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25602
  • 博文数量: 20
  • 博客积分: 800
  • 博客等级: 准尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-30 16:26
文章分类
文章存档

2011年(1)

2009年(19)

我的朋友
最近访客

分类: Java

2009-06-09 23:02:27

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方法的。

 
标签:           
阅读(587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~