|
<html>
,t m8R+z-T2[$}8s<head>
,r"N;T7w:stech.techweb.com.cn<title>Welcome to Tapestry!</title>
7f"i l:n0L(j%J程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛</head>6j0\!D+J6f7e"Y&W'~$J#m
<body>程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛8l9`-c$Y {0H.e8t(X7z
Hello <span jwcid="user">User Name</span>! Welcome to Tapestry!tech.techweb.com.cn-^(V4G4p&z4Z/O.Q
</body>
(n2F(h:j"s!z.J:H0^</html>TechWeb-技术社区 ~%^&x1a(G6i7K)x1y
tech.techweb.com.cn7Q3m2?;a1x5S7J
这里你可能看上去觉得非常眼熟,这不就是一个普通的HTML网页吗?且慢,如果你仔细观察,会发现span标签多了一个新的属性jwcid,这正是 tapestry设计的精妙之处,它的表现层可以说几乎是99%的纯HTML,只是增加了一个jwcid属性,jwcid=”user”在这里的意思是在<span> … </span>之间放置一个名为user的组件。这里要指出的是jwcid属性不仅仅可以放在span标签内,它可以放在任何的HTML标签内,比如<title>、<body>、<form>等等,至于为什么要选<span>的原因是<span>标签不影响网页的输出效果,这就大大方便了美工人员,他们可以直接使用frontpage或dreamwaver来进行设计,而不像JSP那样无法在frontpage或dreamwaver中正常显示。
7^&O*|,O,v
-N.`:|:t'w(b程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛也许你会问,网页上输出的用户名明明是Jack嘛,为什么HTML模板中是User name呢?这是因为当tapestry一旦发现某个HTML标签有jwcid的属性后,它就会把这个标签当做一个组件来看待,至于标签里面的东西到底是原样输出或忽略就要依照那个组件的类型而定了,在这里我们的user组件实际上是一种Insert类型的组件,因此会把<span>标签内的内容忽略掉,其实也可以直接写成<span jwcid=”user”></span>,效果也是一样的,只不过加了User name后就方便了美工人员的排版设计。程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛(\:{-Y6F+]8@-\+K8~
tech.techweb.com.cn+c$K-\*_"`"r*C
请注意,HTML模板有它自己的命名规范,它的文件名应该与Page组件的定义文件相同,只不过是扩展名为.html,与普通的web服务器一般都有一个index.html类似,tapestry也有自己的”index.html”,只不过它的名字不是”index.html”,而是 Home.html,那么这些模板文件究竟应该放在哪儿呢?很简单,放在当前应用的目录下面就行了,比如我们的应用是Welcome,那把它放在 webapps/Welcome目录下面就行了。
9S%~/R3^#S$KTechWeb-技术社区0S m%~-j'W*_"u
Home.pagetech.techweb.com.cn:g7h-X9l3O"E
!q(F&{#b(F+{6T%X
<?xml version="1.0" encoding="UTF-8"?>
#x2}*W2q1P;f.{8I0f;Q程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛<!DOCTYPE page-specification PUBLIC9k3Y7K4W&y-P%v0K
"-//Apache Software Foundation//Tapestry Specification 3.0//EN"
:E3q+`/B6I5C;e @:etech.techweb.com.cn"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛.R/p9e1u-]6Z6{)}0G1?4l
0U w8u#y-h4q)f
<page-specification class="demo.Home">
"b6e'I.H;]$Q)S"x'F"p<component id="user" type="Insert"> V-}'s3h6D)l4]
<binding name="value" expression="userName"/>
5x3|7I1y7R2Y3z4x0b"fTechWeb-技术社区</component>8i+V N!_4f/O'Q8}
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 {7m(~6A R3g3L/l
<context-asset name="$template" path="Home.html"/>
6j s4d m2p*n$X+t6w</page-specification>
&h;^#~&V1G.n*b*d/p*J:{7d,q&D.K2]1k5q*l3h
以上这个文件便是这个名为”Home”的Page组件的页面定义文件,它好像是一座桥,联系着HTML模板和JAVA类进行协同工作。这个定义文件 “Home.page”实际上就是一个xml文件,它的根元素是page-specification,它有一个名为class的属性,用来指示HTML 模板与哪个java类协同工作,在本例中为demo.Home这个类。
|