You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Jesse Kuhnert (JIRA)" <de...@tapestry.apache.org> on 2007/06/17 20:42:26 UTC

[jira] Resolved: (TAPESTRY-1527) @Dialog component triggers a lot a javascript errors on scroll after show/hide by EventListener

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

Jesse Kuhnert resolved TAPESTRY-1527.
-------------------------------------

    Resolution: Won't Fix

Probably not the happiest resolution but there really is no easy fix to the client side widget for this particular component other than re-writing it. (which has been done in the upcoming Dojo 0.9 release) 

There are however a lot of ways to avoid this problem and still have the same functionality.  I've updated the component documentation for this component with all of the knowledge I have personally on using it and common techniques I employ to do various things.  That should hopefully be more than enough to prevent future people from having to code in the dark.  (sorry about that) 

The short version fix for this (that I've outlined more extensively in the new documentation) is that you can't wrap the @Dialog component with another component and update it in AJAX requests by updating the outer div.   I know that is a common thing people had to do in Tacos but this should really never be the case in 4.1.2 for anyone anymore.  That part of XHR updates has become pretty iron clad and I'd be surprised if someone were able to point out any issues with it. 

Luckily for you - you should have no problems just updating the dialog component directly instead of the wrapping Any component.  This will solve the problems outlined in this particular ticket. 

> @Dialog component triggers a lot a javascript errors on scroll after show/hide by EventListener
> -----------------------------------------------------------------------------------------------
>
>                 Key: TAPESTRY-1527
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1527
>             Project: Tapestry
>          Issue Type: Bug
>          Components: XHR/dhtml/Ajax
>    Affects Versions: 4.1.2
>         Environment: JRE1.5.0.7, Tomcat 5.5, WinXP, Firefox 2, IE 7
>            Reporter: Christian Dutaret
>            Assignee: Jesse Kuhnert
>             Fix For: 4.1.2
>
>         Attachments: Dialog.script
>
>
> Issue with the dojo javascript with the @Dialog component and EventListener annotations:
> - the @Dialog component is initialized as hidden
> - A user clicks on a link, which triggers an EventListener, which updates a component that wraps the @Dialog and makes it visible
> - within the Dialog, a "Close" button is displayed. When the user clicks on it, it triggers the EventListener again, the wrapper component is updated and the Dialog is set back to hidden.
> Everything works as expected, but once the Dialog has been opened then closed once, every scroll event on the page triggers js errors.
> on FF2.0 : "node has no properties" on line 96 in dojo.js
> on IE7 : "offsetWidth is null or is not an object" (freely translated from french)
> Tried it on 4.1.1 and latest 4.1.2 snapshot : exact same behavior.
> my HTML template:
> <span jwcid="dialwrapper@Any">
>     <div jwcid="dial@Dialog" hidden="ognl:hidden" backgroundColor="blue">
>         <div style="background-color: white; border-width: 1px; width: 600px; height: 400px;">DIV content<br />
>             <form><input type="button" onclick="someJsThatEventuallyTriggersTheEventListener();" value="Close" /></form>
>         </div>
>     </div>
> </span>
> my page class:
>     @InitialValue("true")
>     public abstract void setHidden(boolean value);
>     @EventListener(elements = "dialwrapper", events = "someCustomJsEvent", submitForm = "hiddenFormWhichUpdatesSelectedAnnounceId")
>     public void selectAnnounce(IRequestCycle cycle, BrowserEvent event) {
>         setHidden(getSelectedAnnounceId() == null);
>         cycle.getResponseBuilder().updateComponent("dialwrapper");
>     }

-- 
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: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org