[ 
https://issues.apache.org/jira/browse/TAP5-893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Deian Ivanov resolved TAP5-893.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 5.1.0.5

Okay so after getting to the bottom of the issue here are the outcomes:  the 
actual reason was that the tag id wasn't set ! (only t:id was)
So the zone requires both <zone t:id=required id=required/> in order to have 
properly behaving nested zones.


however the question about programmatically setting the id and t:id is still 
open

> Nested zone elements problem : changes the HTML DOM and due that the tag 
> cannot be find 
> ----------------------------------------------------------------------------------------
>
>                 Key: TAP5-893
>                 URL: https://issues.apache.org/jira/browse/TAP5-893
>             Project: Tapestry 5
>          Issue Type: Bug
>    Affects Versions: 5.1.0.5
>            Reporter: Deian Ivanov
>             Fix For: 5.1.0.5
>
>
> Hi guys,
> Here is a problem I stumbled upon today. I have to create a page with two 
> nested tabsets. 
> I put together a quick tabset component.
> I found out that I cannot put two nested zones since the id parameter of the 
> zone must me string and that string cannot be fed from ${var} ??! 
> We must change that or perhaps one of those magical prefixes can do the job?
> Anyways the ui of the two tabsets had to be different so created a second 
> tabset component with a different zone id.
> However, when I play a bit with the tabsets it happens that the second(the 
> nested) tabset stops working and FF reports an error in Tapestry.js
> function $T(element) {
>  var e = $(element);
> var t = e._tapestry;  <=== e is null
> It is obvious that once the Ajax response returns a new block the ids are 
> changed and the ${} function doesn't work already. However 
> document.getElementByID() still ugly and still works and perhaps we can 
> change the Tapestry.js to accommodate those cases? 
> And in general how do we change that file? I'd go one step further to find 
> and suggest a solution but how do we access that file?
> Cheers,
> Deian
> Here is the simple code:
> NestedZones.tml
> <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
>       xmlns:p="tapestry:parameter"> 
>       
>       ${Name}<br/>
>               <hr/>
>               <a t:type="EventLink" event="click" zone="zz1" 
> t:context="literal:pp1" >#1->1</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz1" 
> t:context="literal:pp2" >#2->1</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz2" 
> t:context="literal:pp1" >#1->2</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz2" 
> t:context="literal:pp2" >#2->2</a>
>                       <br/>
>               <hr/>
>               
>               <t:zone t:id="zz1" style="border: 2px solid red; width: 300px; 
> height: 300px;">
>                       <t:slot id="pp1"/>
>               </t:zone>       
>       <t:block id="pp1">
>               This is block #1;
>               <a t:type="EventLink" event="click" zone="zz1" 
> t:context="literal:pp1" >#1->1</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz1" 
> t:context="literal:pp2" >#2->1</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz2" 
> t:context="literal:pp1" >#1->2</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz2" 
> t:context="literal:pp2" >#2->2</a>
>                       <br/>
>                       <t:zone t:id="zz2" style="border: 2px solid green; 
> width: 100px; height: 100px;">
>                               <t:slot id="pp2"/>
>                       </t:zone>       
>       </t:block>
>       
>       <t:block id="pp2">
>               This is block #2;
>               <a t:type="EventLink" event="click" zone="zz1" 
> t:context="literal:pp1" >#1->1</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz1" 
> t:context="literal:pp2" >#2->1</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz2" 
> t:context="literal:pp1" >#1->2</a>
>                       <br/>
>               <a t:type="EventLink" event="click" zone="zz2" 
> t:context="literal:pp2" >#2->2</a>
>                       <br/>
>       </t:block>
>        
> </html>
> and the NestedZones.java
> import org.apache.tapestry5.Block;
> import org.apache.tapestry5.ComponentResources;
> import org.apache.tapestry5.MarkupWriter;
> import org.apache.tapestry5.annotations.BeforeRenderBody;
> import org.apache.tapestry5.annotations.Component;
> import org.apache.tapestry5.annotations.Property;
> import org.apache.tapestry5.corelib.components.EventLink;
> import org.apache.tapestry5.ioc.annotations.Inject;
> public class NestedZones {
>       
>     @Inject
>       private ComponentResources resources;
>     
>       //@Component(parameters = {"event=click"})
>     //private EventLink click1, click2, click3; 
>     Object onClick(String s) {
>               Block toRender = null;
>               ComponentResources scanResources = resources;
>               while(scanResources != null) {
>             toRender = scanResources.findBlock(s);
>                       scanResources = scanResources.getContainerResources();
>                       // try to scan upper level
>               }
>         return toRender;
>     }
>       
>     public String getName() {
>       return "Zones Test";
>     }
> }

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

Reply via email to