2012-07-29 75 views
0

我正在從Tapestry 3切換到Tapestry 5,我對某些主題有點困惑。 在掛毯3能夠訪問頁面組件/從使用例如在同一頁面中使用的其它組分的屬性:Tapestry 5訪問頁面中使用的其他組件的屬性/屬性

<span jwcid="@RenderBlock" block="ognl:page.components.myMenu"/> 

myMenu已經在HTML頁面中定義如下:

<span jwcid="[email protected]"> 
    <span jwcid="@MyMenu"/> 
<span/> 

MyMenu組件在其自己的文件中定義。

如何才能用Tapestry 5做同樣的事情?

謝謝你的幫助。

回答

0

掛毯5具有用於此目的的特殊結合前綴:

塊:FOO結合參數

組分:棒結合參數組分與T:ID = 「酒吧」

超越您可以使用@Inject來注入塊或組件,併爲這些注入公開屬性。

你舉的例子可能看起來像:

<t:delegate to="block:mymenu"/> 

... 

<t:block id="mymenu"> ... </t:block> 

假設它們在同一個模板都定義;否則你必須安排參數或屬性來將事情聯繫在一起。

+0

霍華德你好。謝謝你的答案。這幾乎完成了。我只需要在顯示頁面之前檢查頁面中是否已經存在。使用Tapestry 3這是通過'page.components.myMenu!= null'執行的。 – 2012-07-31 19:58:30

+0

檢出ComponentResources,它應該有你需要的方法。 – 2012-08-01 15:40:04

+0

您好用'resources.getPage()。getComponentResources()。getBlock(「MyMenu」);'實現我的請求。非常感謝你。 – 2012-08-01 16:53:13