a) You don't need to copy the value from the parameter to the property.
b) There is no need to persist it.

@Parameter
@Property
private String usage;

<t:block t:id="refreshBlock">
       ${usage}
</t:block>

2009/3/26 ahingsaka samsenesena <asamsenes...@sharengo.org>

> Hi,
>
> I'm trying to use my own component inside a loop and I have a problem
> when there is a "persist" annotation on attributes.
>
> I want to loop with my component named "test" in a page like this :
>
> <t:zone t:id="refreshZone"/>
>
> <t:loop source="0..2" value="testId">
>   <t:test usage="${usage}"/>
> </t:loop>
>
> The component contains a string attribute "usageValue" that will be
> displayed in the refreshZone.
> This attribute comes from the parameter "usage". I put my value on the
> setupRender method.
>
> The class of the component is like this :
> public class Test {
>
>        @Parameter
>        private String usage;
>
>        @Persist
>        @Property
>        private String usageValue;
>
>        @Inject
>        private Block refreshBlock;
>
>        boolean setupRender(MarkupWriter writer) {
>                this.usageValue = usage;
>                return true;
>        }
>
>        Object onActionFromClick() {
>                return refreshBlock;
>        }
> }
>
> And the tml :
> <t:block t:id="refreshBlock">
>        ${usageValue}
> </t:block>
>
> <t:actionlink t:id="click" t:zone="refreshZone">Click
> me</t:actionlink><br/>
>
> The controller of the page is quite simple and returns an usage for a
> given number
> public class ContentTest {
>
>        @Property
>        private int testId;
>
>        public String getUsage() {
>                if (testId == 0) {
>                        return "pix";
>                } else if (testId == 1) {
>                        return "zoom";
>                } else if (testId == 2) {
>                        return "thumb";
>                } else
>                        return "";
>
>        }
> }
>
> Here is the problem : when I click on the link, the value displayed is
> always "thumb" !
> I should have "pix" displayed with the first link, "zoom" with the
> second ...
>
> I tried to put an id, but the behaviour is the same :
> <t:loop source="0..2" value="testId">
>   <t:test t:id="testId" usage="${usage}"/>
> </t:loop>
>
> And if I don't use the loop, there is no problem :
> <t:zone t:id="refreshZone"/>
> <t:test usage="literal:pix">
> </t:test>
> <t:test usage="literal:zoom">
> </t:test>
> <t:test usage="literal:thumb">
> </t:test>
>
> If I use these lines, i have the right behaviour.
>
> What's going on ?
>
> Ahingsaka SAMSENESENA
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to