One way is using the internal API, which is not recommended. I don't know 
whether there is a better one.

@Inject
 private ComponentResources componentResources;

public String getZone() {
   InternalComponentResourcesImpl containerResources = 
(InternalComponentResourcesImpl)componentResources.getContainerResources();
   String zone= (String)containerResources.getBinding("zone").get();
   return zone;
}


DH
http://www.gaonline.com.cn

----- Original Message ----- 
From: "Alfie Kirkpatrick" 
To: "Tapestry users" <users@tapestry.apache.org>
Sent: Thursday, July 02, 2009 4:08 PM
Subject: Accessing parameter of container from mixin


Hi, I am writing a mixin that can be used with submit, actionlink,
linksubmit and other things that support a zone parameter.

 

I need to know the zone name from the container. I can add a zone
parameter to my mixin but it's 'namespaced', ie. doesn't pick up the
zone parameter of the container.

 

I would like to write a defaultZone method but cannot see an obvious way
to get the parameter from the container. I am injecting the container
fine but the zone field is private with annotation rather than exposed
with a getter.

 

The workaround is to duplicate the attribute, eg:

 

                <t:actionlink t:mixins="overlay" zone="x"
overlay.zone="x">...</t:actionlink>

 

This works fine but is not quite as elegant as I'd like!

 

Any ideas?

Thanks, Alfie.

Reply via email to