Tapestry5.1教程:Tapestry的页面

1、Tapestry 5.1的Start.tml和Start.java

Tapestry不需要在Web.xml中配置welcome页面,也是使用约定大于配置的方式,默认的起始页面就是在pages目录下的Start。Tapestry中的页面由两部分组成:一个Java类和一个相同名字的模板文件(类似于jsp,Tapestry中的后缀名为:tml)。其中Java类是必须的,就算是没有任何代码,也必须要生成一个空类。tml模板在大多数情况下也是需要的,少数情况比如返回二进制流的话,可以不需要。

tml模板文件可以放在webroot目录下,也可以和Java类一直放在src目录下。

2、Tapestry 5.1中页面的跳转(可以用于指定跳转页面的东西:) @InjectPage

在Tapestry中,页面的跳转和Struts之类的框架是不同的,Struts的做法是Action返回一个字符串,Struts在xml配置文件中进行搜索匹配,决定跳转的页面。而Tapestry没有类似的配置文件,它的做法是在当前页中引用跳转页面。比如:想从Start跳转到Register页面的话,需要在Start中注入Register页面。示例代码如下:

 
 
 
  1. Class Start{
  2.         @InjectPage
  3.         private Register register;
  4.         Object onSubmit() {
  5.                 return register;
  6.         }
  7. }

其中值得注意的是: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 5.1页面中的表达式

类似于jsp中< %= 变量名%>这样的写法,Tapestry的语法是${变量名},其中变量名是需要在页面对应的Java类中有get方法的。

4. Tapestry 5.1中页面相关的其他注意事项

◆在Tapestry中,页面称之为页面模板(Page Template)。Tapestry的页面模板必须是一个Well Formed Xml,需要引入Tapestry的Xml命名空间才能使用Tapestry的组件。示例:

 
 
 
  1. < html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">

◆在页面模板中可以使用表达式来获取变量的值。这种表达式在Tapestry中称之为:Expansion。

◆在前一篇文章中已经说过,一个页面模板必须有一个对应的Java类。在Tapestry中最基本的Expansion就是一个Java类的属性。比如:${userName}这就是一个在可以在页面模板中使用的Expansion,为了正确的显示用户名,必须在Java类中有一个对应的public String getUserName()这样一个方法。注意:是一个getter方法,而不必需是public String userName,实际上,如果没有userName这个属性,而只有getUserName这个方法,应用将能正确运行。

◆Expansion是不区分大小写的,也就是说${userName}和${UserName}是等价的。

◆使用Expansion,我们不仅可以显示Java类的属性,而且可以显示该属性的属性,比如Java类有一个日期型属性public Date getBirthday();那么,在页面模板中就可以这样使用:${birthday.time},相当于调用getBirthday().getTime()

◆也可以显示地调用非getter方法:比如:${birthday.hashCode()},Tapestry5.1开始,可以将属性作为函数调用的参数了。

◆可以使用?.来调用方法:比如:${birthday?.time},这样即使birthday是null,页面也不会报错。

◆Tapestry的Expansion是会编译时生成class文件的,而不是在运行时使用反射来取值的。Tapestry的作者认为这是Tapestry性能优于Struts2的可能(注意:Howard Lewis Ship也只是猜测)原因之一。

◆Tapestry的Expansion使用的几个说明:

        a、Expansion旁边的空白是会被忽略的

        b、整数和小数前面可以使用负号

        c、常数都是使用十进制的。

        d、字符串需要使用单引号

        e、可以使用..来表示一个范围,比如:1..5,表示1到5

当前文章:Tapestry5.1教程:Tapestry的页面
文章源于:http://www.mswzjz.cn/qtweb/news26/428676.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能