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