Lance created TAP5-2060:
---------------------------

             Summary: 5.4-alpha-2 - Delegate in eventlink body prevents ajax
                 Key: TAP5-2060
                 URL: https://issues.apache.org/jira/browse/TAP5-2060
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core
    Affects Versions: 5.4
            Reporter: Lance


I have found a bug in 5.4-alpha-2 which does NOT occur in 5.3.6 when using the 
exact same code. The symptoms of the bug are: 
1. I have a component parameter, "linkBody", which is a block 
2. I delegate to the "linkBody" in the body of an ajax eventlink 
3. When the "linkBody" parameter contains markup, the serverside event is NOT 
XHR as expected 
4. When the "linkBody" does not contain markup (a simple string), the 
serverside event is XHR as expected 
5. There are no javascript errors shown in the browser (firefox and chrome) 
6. This happens for both prototype and jquery 

The component (below) succeeds for the following tml: 
========================================= 
<t:myComponent>
   <p:linkBody>This is a plain text link body</p:linkBody>
</t:myComponent>

The component (below) throws a "NOT XHR" exception for the following tml: 
======================================================= 
<t:myComponent>
   <p:linkBody><div>This link body contains markup</div></p:linkBody>
</t:myComponent>

MyComponent.tml 
============= 
<div xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"; 
xmlns:p="tapestry:parameter">
        <t:zone t:id="myZone" />
        <t:eventlink event="doIt" zone="myZone">
                <t:delegate to="linkBody" />
        </t:eventlink>
        <t:block t:id="ajaxBlock">
                Hello World 
        </t:block>
</div>

MyComponent.java 
============== 
public class MyComponent { 
        @Parameter(required=true) 
        @Property 
        private Block linkBody; 
        
        @Inject 
        private Block ajaxBlock; 
        
        @Inject 
        private Request request; 
        
        Block onDoIt() { 
                if (!request.isXHR()) { 
                        throw new RuntimeException("Request is not XHR"); 
                } 
                return ajaxBlock; 
        } 
}


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to