You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Alfie Kirkpatrick <Al...@ioko.com> on 2009/07/02 10:08:03 UTC

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.


Re: Accessing parameter of container from mixin

Posted by DH <ni...@gmail.com>.
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" <us...@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.


Re: Accessing parameter of container from mixin

Posted by Kristian Marinkovic <kr...@porsche.co.at>.
there is no way to do so right now. see 
https://issues.apache.org/jira/browse/TAP5-103 

there has been some comments on this matter recently (see 
http://tapestry-dev.markmail.org/search/?q=TAP5-103)

g,
kris




"Alfie Kirkpatrick" <Al...@ioko.com> 
02.07.2009 10:08
Bitte antworten an
"Tapestry users" <us...@tapestry.apache.org>


An
"Tapestry users" <us...@tapestry.apache.org>
Kopie

Thema
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.