Tapestry的template和specification定義在不同檔案夾的方法

來源:互聯網
上載者:User
    最近有朋友問:“把‘*.page’與‘*.html’完全分開,靜態頁面自己就是一個完整的項目,但Tapestry預設情況下是找不到的,有什麼方法才能做到呢?”。

    解決的方法很簡單,Tapestry內部已經支援了這種做法,只是估計由於Tapestry的作者不是精選這種做法所以沒有介紹這種方法。在Tapestry3和Tapestry4中解決這個問題的方法都一樣。在定義檔案中定義一個特殊以"$template"命名的資源就可以了。比方說以Tapestry4為例,通過如下的定義就可以將一個定義檔案與一個模版檔案聯絡起來。
<page-specification >
    <asset name="$template" path="context:WEB-INF/pageName.html"/>
</page-specification >

    另外,Tapestry4是可以使用路徑加定義檔案來搜尋網頁面或組件。比方說我有如此一個分頁檔"WEB-INF/pages/hawk.page", 那麼如果我不在*.applicaton 檔案中定義這個頁面的話,可以使用"pages/hawk"作為頁面的名稱。在我需要在頁面調用該頁面可以用“<a jwcid=‘@PageLink’ page=‘pages/hawk’>...</a>”等形式。

    Tapestry4在架構的擴充性方面做了很多工夫,可以說現在它的擴充性是很強了。如果果真程式需要使用比較特別的方法定義定義檔案和模板檔案的話可以使用架構的擴充點來擴充模板讀取的策略。當然,這個也需要有對Tapestry更深入的瞭解。比如模板檔案放在資料庫中或著是運行時動態產生,那麼可以用如下形式在*.application 中添加一個合適的模版檔案讀取的代理類。當架構使用預設的模板讀取方式無法讀取到檔案的時候就會調用自訂的方式來讀模數板。
<extension name="org.apache.tapestry.template-source-delegate " class="implement of org.apache.tapestry.engine.ITemplateSourceDelegate"/>

    總的來說,頁面的定義檔案是最為重要的(當然Tapestry4對這個定義作了擴充,可以使用JAVA5的注釋類型)。通過它將java類和模版聯絡起來。它除了可以指定對應的java類,也可以指定對應的摸板檔案。Tapestry認識一個頁面也首先是從這個定義檔案開始的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.