天天看點

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字首