[
https://issues.apache.org/jira/browse/TAPESTRY-2472?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12608286#action_12608286
]
Mike Oestereter commented on TAPESTRY-2472:
-------------------------------------------
I see what you mean. I would have expected the framework to "autowire" the ids
(or have the ability to automatically connect the dots) as somehow my
experience with Tacos used to be. But whatever, thanks anyway.
> 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]