2013-03-27 73 views
1

我有一個關於Tapestry頁面和模板的問題。Java Tapestry5動態佈局

用戶發送請求獲取頁面。我認識到請求來自移動或桌面。我想用不同的佈局顯示請求的頁面。

例如:

如果請求來自移動裝置欲加載mobileLayout.tml和頁/移動/ index.tml,即index.tml個人有T:類型= 「mobilelayout」。

如果它來自桌面設備我想加載layout.tml和pages/index.tml,那index.tml有t:type =「layout」。

例子:

顯示頁頁/ index.tml僅適用於桌面設備。

僅針對移動設備顯示頁面/ mobile/index.tml。

  • 請求的頁面:/指數
  • 設備:電話
  • 我想加載mobileLayout和網頁/移動/ index.tml

  • 請求的頁面:/指數

  • 設備:桌面
  • 我想加載layout.tml和pages/index.tml

基本上對於移動設備,我想從網頁/手機獲取內容,否則從網頁/。

是否像Tapestry5(5.3.6)中可能的東西?

我試圖像下面,但沒有成功:

LayoutLoader.tml - 在那裏,我認識那裏請求來自。

<t:delegate to="layout" /> 

<t:block t:id="mobileLayout"> 
    <t:mobileLayout />  
</t:block> 

<t:block t:id="desktopLayout"> 
    <t:layout /> 
</t:block> 

組件/ Layout.tml

<body t:type="layoutloader">...</body> 

組件/ MobileLayout.tml

<body t:type="layoutloader">...</body> 

頁/ Index.tml

<div t:type="layout">...</div> 

頁/移動/ Index.tml

<div t:type="mobileLayout">...</div> 
+0

這是一個有趣的線索:http://apache-tapestry-mailing-list-archives.1045711.n5.nabble.com/Supporting-multiple-devices- eg-browser-mobile-TV-td2434796.html – 2013-03-27 14:20:50

+0

感謝您的鏈接我會檢查出來。 – Zis 2013-03-27 14:38:20

回答

1

您可能會發現伊戈爾的博客文章有趣http://blog.tapestry5.de/index.php/2011/06/24/template-skinning/

+0

Tapestry 5.3增加了對蒙皮和主題的支持;伊戈爾提供了一個很好的描述。唯一的詭計是你必須提供一些墊片來向Tapestry解釋主動和主動請求的主題和/或皮膚;該信息可能來自網站地址,或者被編碼到URL中,或者可能是一個cookie ......它是非常開放的,因此您的應用程序需要提供一個墊片。 – 2013-06-03 17:45:53