温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Tapestry的页面怎么配置

发布时间:2022-01-04 10:51:50 来源:亿速云 阅读:118 作者:iii 栏目:编程语言

本篇内容主要讲解“Tapestry的页面怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“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页面。示例代码如下:

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 5.1页面中的表达式

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

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

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

< 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

到此,相信大家对“Tapestry的页面怎么配置”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI