2012-07-29 84 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