tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lance (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (TAP5-2060) 5.4-alpha-2 - Markup in eventlink body prevents ajax
Date Mon, 28 Jan 2013 14:27:12 GMT

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

Lance updated TAP5-2060:
------------------------

    Description: 
When I use markup in an eventlink body, it prevents the eventlink from being an ajax/XHR request.
This code works in tapestry 5.3.6

For the following page:

public class TestPage {
	@Inject
	private Request request;
	
	@Inject
	private Block ajaxBlock;
	
	Block onDoIt() {
		if (!request.isXHR()) {
			throw new RuntimeException("Event is not ajax");
		}
		return ajaxBlock;
	}
}

The following tml throws an "Event is not ajax request" exception
   <t:zone t:id="myZone" />
   <t:eventlink event="doIt" zone="myZone"><div>Link containing markup</div></t:eventlink>
   <t:block t:id="ajaxBlock">Hello World</t:block>

Whereas this works fine (note that the eventlink body does not contain markup)
   <t:zone t:id="myZone" />
   <t:eventlink event="doIt" zone="myZone">Plain text link</t:eventlink>
   <t:block t:id="ajaxBlock">Hello World</t:block>

  was:
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; 
        } 
}


        Summary: 5.4-alpha-2 - Markup in eventlink body prevents ajax  (was: 5.4-alpha-2 -
Delegate in eventlink body prevents ajax)
    
> 5.4-alpha-2 - Markup 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
>
> When I use markup in an eventlink body, it prevents the eventlink from being an ajax/XHR
request. This code works in tapestry 5.3.6
> For the following page:
> public class TestPage {
> 	@Inject
> 	private Request request;
> 	
> 	@Inject
> 	private Block ajaxBlock;
> 	
> 	Block onDoIt() {
> 		if (!request.isXHR()) {
> 			throw new RuntimeException("Event is not ajax");
> 		}
> 		return ajaxBlock;
> 	}
> }
> The following tml throws an "Event is not ajax request" exception
>    <t:zone t:id="myZone" />
>    <t:eventlink event="doIt" zone="myZone"><div>Link containing markup</div></t:eventlink>
>    <t:block t:id="ajaxBlock">Hello World</t:block>
> Whereas this works fine (note that the eventlink body does not contain markup)
>    <t:zone t:id="myZone" />
>    <t:eventlink event="doIt" zone="myZone">Plain text link</t:eventlink>
>    <t:block t:id="ajaxBlock">Hello World</t:block>

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

Mime
View raw message