天天看点

Tapestry 学习 2

《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前缀