Гобелен 5, доступ к компонентам/свойствам страницы из других компонентов, используемых на странице

Я переключаюсь с Гобелена 3 на Гобелен 5, и я немного запутался в некоторых темах. В гобелене 3 можно получить доступ к компонентам/свойствам страницы из других компонентов, используемых на той же странице, используя, например:

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

myMenu уже определено на странице html следующим образом:

<span jwcid="myMenu@Block">  
  <span jwcid="@MyMenu"/>  
<span/>  

Компонент MyMenu определяется в своих собственных файлах.

Как можно было бы сделать то же самое с Tapestry 5?

Спасибо за помощь.


person Arthur bauer    schedule 29.07.2012    source источник


Ответы (1)


Tapestry 5 имеет для этой цели специальные префиксы привязки:

block:foo привязывает параметр к

component:bar привязывает параметр к компоненту с t:id="bar"

Кроме того, вы можете использовать @Inject для внедрения блока или компонента и предоставления свойств для этих внедрений.

Ваш пример может выглядеть примерно так:

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

...

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

предполагая, что они оба определены в одном и том же шаблоне; в противном случае вам придется упорядочивать параметры или свойства, чтобы связать вещи вместе.

person Howard M. Lewis Ship    schedule 31.07.2012
comment
Привет, Говард. Спасибо за ответ. Это почти сделано. Мне просто нужно проверить, что нужные блоки уже существуют на странице, прежде чем отображать их. В Tapestry 3 это выполнялось через page.components.myMenu != null - person Arthur bauer; 31.07.2012
comment
Проверьте ComponentResources, у него должны быть нужные вам методы. - person Howard M. Lewis Ship; 01.08.2012
comment
Привет использовал resources.getPage().getComponentResources().getBlock("MyMenu"); для реализации моего запроса. Большое Вам спасибо. - person Arthur bauer; 01.08.2012