[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tapestry-user
Subject:    Re: different results using different binding style
From:       "Thiago H de Paula Figueiredo" <thiagohp () gmail ! com>
Date:       2014-04-24 14:35:16
Message-ID: op.xetr42deovlrp5 () arsmachina
[Download RAW message or body]

On Wed, 23 Apr 2014 22:54:20 -0300, Paul Stanton <pauls@mapshed.com.au>  
wrote:

> Hi all,

Hi!

>
> My component class has a method as such:
>
> public MyEnum getMyEnum1()...
>
>
> If I use the property binding for 'value' it is treated as its  
> 'EnumType' which is compatible with the encoder...
>
> <t:radiogroup value="selected" encoder="myEnumEncoder">
>      <t:radio t:id="myEnum1" value="myEnum1" />
>
>
> ...however using the 'evaluated' binding the 'value' is converted to a  
> String
>
> <t:radiogroup value="selected" encoder="myEnumEncoder">
>      <t:radio t:id="myEnum1" value="${getMyEnum1()}" />
>
> I would have expected the two methods to behave identically.

I'm sorry, your expectation is very wrong. That's expected behavior. ${}  
always coerces the result to a String. That's what it does. It's meant to  
be used to include dynamic stuff into templates, not bind parameters.

Never, never, ever use ${} when binding parameters. It's always wrong  
(your case as an example) or useless, so let's keep it simple and have a  
single rule for all situations> never use ${} when binding parameters.  
N-e-v-e-r. I've said this almost 50 times on this mailing list already. :P

> The reason it would be nice if the 2nd worked is that if there are 1000  
> different potential values, I could parametrise the method and cut down  
> the code in my component class.

Why can't you do the same in method one? Put it inside a loop, problem  
solved.

@Property
private MyEnum myEnumValue;

<t:radiogroup value="selected" encoder="myEnumEncoder">
	<t:loop source="myEnums" value="myEnumValue">
		<t:radio t:id="myEnum1" value="myEnumValue" />
	</t:loop>
</t:radiogroup>

-- 
Thiago H. de Paula Figueiredo
Tapestry, Java and Hibernate consultant and developer
http://machina.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic