incorrect zone id javascript mapping with page having more than 1 of same 
component containing a zone 
------------------------------------------------------------------------------------------------------

                 Key: TAPESTRY-2472
                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2472
             Project: Tapestry
          Issue Type: Bug
          Components: Core Components, JavaScript, tapestry-core
    Affects Versions: 5.0.13, 5.0.14
         Environment: jetty 6.1.9, java 1.6, os x, linux
            Reporter: Mike Oestereter


When a page contains more than one of the same component (either multiple 
inclusions or inside a loop) and the component contains a zone with an 
actionlink that updates this zone then only the zone of the first component 
instance gets updated in all actionlink-clicks of all components.

It appears as if the Tapestry javascript initialization mapping parameters are 
incorrect:

This is what gets generated:
Tapestry.DEBUG_ENABLED = true;
Tapestry.onDOMLoaded(function() {
Tapestry.init({"zone":["zone1","zone1_0"],"linkZone":[["update","zone1"],["update_0","zone1"]]});
});

It should be:
...
Tapestry.init({"zone":["zone1","zone1_0"],"linkZone":[["update","zone1"],["update_0","zone1_0"]]});
...


Below is more detailed information including code examples:

I get the correct result after clicking on
the "update: two" hyprlink (the correct zone is updated):

update: one (hyperlink)
UPDATED two

BUT when I modify the page .tml and put the body inside a
<html><body>...</body></html> in stead of only inside a
<html>...</htm>

The following html source get generated by tapestry at the bottom of
the page and...

<!--
Tapestry.DEBUG_ENABLED = true;
Tapestry.onDOMLoaded(function() {
Tapestry.init({"zone":["zone1","zone1_0"],"linkZone":[["update","zone1"],["update_0","zone1"]]});
});
// -->

...and the result is incorrect ("zone1_0" should have been updated and
not "zone1"):

UPDATED two
update: two (hyperlink)


Here is all the code:

Page code:

ZonePage.tml

<html xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
   <t:zonecomp>one</t:zonecomp>
   <br/>
   <t:zonecomp>two</t:zonecomp>
</html>

public class ZonePage {
}


Component Code:

ZoneComp.tml

<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
   <t:zone t:id="zone1" visible="true">
       <t:delegate to="prop:activeBlock"/>
   </t:zone>
   <t:block t:id="beforeUpdate">
       <t:actionlink t:id="update" zone="zone1">update:
<t:body/></t:actionlink>
   </t:block>
   <t:block t:id="afterUpdate">
       <p>UPDATED <t:body/></p>
   </t:block>
</t:container>

public class ZoneComp {

   @Persist("session")
   private boolean updated = false;

   @Inject
   private Block beforeUpdate;

   @Inject
   private Block afterUpdate;

   @Component(id="zone1")
   private Zone zone;

   public Object onActionFromUpdate() {
       updated = true;
       return zone;
   }

   public Object getActiveBlock() {
       if (updated) return afterUpdate;
       return beforeUpdate;
   }

}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to