《Enjoying Web Development with Tapestry》是本入门好书,写得很清楚。
Tomcat5.5设置在$TOMCAT/conf/Catalina/localhost/<webapp>.xml
HelloWorld.xml 中写这个:<Context docBase="c:/workspace/HelloWorld/context" path="/HelloWorld"/>
访问Tapestry页面 http://localhost:8080/HelloWorld/app?service=page&page=Home
http://localhost:8080/HelloWorld/ 和所有jsp一样。
app在web application中定义。
service=page 显示一个文件
page=Home 显示Home.html
页面的内部调用次序
<html>Hello <span jwcid="subject">World</span>!</html>
1. 正常html代码 <html>Hello
2. 输出 <html>Hello
3. 找到Tapestry控件<span jwcid="subject">World</span>
4. Tapestry按照定义创建控件,这个控件是java的Component "subject"
5. Tapestry创建了html代码,John
6. 输出 John
7. 正常html代码 !</html>
8, 输出 !</html>
如何创建一个控件,在页面定义:
<page-specification>
<component id="subject" type="Insert">
<binding name="value" value="ognl:greetingSubject"/>
</component>
</page-specification>
id 是标志,type是Tapestry的控件类型,insert表示输出text形式。value是Insert的一个参数。"ognl:greetingSubject"是要找的表达式。
Tapestry如何创建一个java对象
1. 建立一个org.apache.tapestry.html.BasePage对象。这是页面所有的基类。
2. 根据XXX.page把属性等都创建出来
3. 这里要创建一个subject控件,先执行getGreetingSubject()函数获得GreetingSubject的值,它的value就是subject的输出。
package com.ttdev.helloworld;
import org.apache.tapestry.html.BasePage;
public class Home extends BasePage {
public String getGreetingSubject() {
return "John";
}
}
这里是java文件。
Tapestry缺省是cache HTML 和 .page文件,
set JAVA_OPTS="-Dorg.apache.tapestry.disable-caching=true"可以关闭Tapestry的cache
其它的写法
<binding name="value" value="ognl:'Paul'"/>直接返回string
<binding name="value" value="literal:Judy"/>在一个string队列中返回
<binding name="value" value="greetingSubject"/>缺省的ognl前缀