You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Andreas Andreou (JIRA)" <de...@tapestry.apache.org> on 2007/09/24 08:43:50 UTC

[jira] Created: (TAPESTRY-1775) Multiple submit buttons inside async form can invoke incorrect listener

Multiple submit buttons inside async form can invoke incorrect listener
-----------------------------------------------------------------------

                 Key: TAPESTRY-1775
                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1775
             Project: Tapestry
          Issue Type: Bug
          Components: Framework, JavaScript
    Affects Versions: 4.1.3
            Reporter: Andreas Andreou
            Assignee: Andreas Andreou
             Fix For: 4.1.4


... this can happen when the updateComponents of the buttons doesnt cover the form.

So, in such a case, when button1 is clicked it sets itself as tapestry.forms.form['Form'].clickedButton
and correctly does the async form submit.
However, the xhr response does NOT include any calls to tapestry.form.registerForm since (as stated) 
updateComponents may not really include the whole form. So, what this means is that the old value for
tapestry.forms.form['Form'].clickedButton remains - triggering the associated listener no matter how the 
new form is submitted.




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


[jira] Updated: (TAPESTRY-1775) Multiple submit buttons inside async form can invoke incorrect listener

Posted by "Francesco Degrassi (JIRA)" <de...@tapestry.apache.org>.
     [ https://issues.apache.org/jira/browse/TAPESTRY-1775?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Francesco Degrassi updated TAPESTRY-1775:
-----------------------------------------

    Attachment: form.js.diff

I had the same issue in the following scenario:
 * form not updated asynchronously
 * asynchronous direct link in the form that submits it and calls listener X
 * synchronous search button in the form that calls listener Y

The problem was the following:
 * clicked on the async direct link ->  listener X called
 * clicked on the sync button -> both listeners X and Y called

Using FireBug shows that the form submitName field was left set to "direct link name" after async submit and following sync submit sent again the "stale" submitName value.

I attached a patch that clears the subminName hidden field when appropriate after a form submit

> Multiple submit buttons inside async form can invoke incorrect listener
> -----------------------------------------------------------------------
>
>                 Key: TAPESTRY-1775
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1775
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework, JavaScript
>    Affects Versions: 4.1.3
>            Reporter: Andreas Andreou
>            Assignee: Andreas Andreou
>             Fix For: 4.1.4
>
>         Attachments: form.js.diff
>
>
> ... this can happen when the updateComponents of the buttons doesnt cover the form.
> So, in such a case, when button1 is clicked it sets itself as tapestry.forms.form['Form'].clickedButton
> and correctly does the async form submit.
> However, the xhr response does NOT include any calls to tapestry.form.registerForm since (as stated) 
> updateComponents may not really include the whole form. So, what this means is that the old value for
> tapestry.forms.form['Form'].clickedButton remains - triggering the associated listener no matter how the 
> new form is submitted.

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


[jira] Commented: (TAPESTRY-1775) Multiple submit buttons inside async form can invoke incorrect listener

Posted by "Andreas Andreou (JIRA)" <de...@tapestry.apache.org>.
    [ https://issues.apache.org/jira/browse/TAPESTRY-1775?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12530731 ] 

Andreas Andreou commented on TAPESTRY-1775:
-------------------------------------------

Something like your patch was my original thought at well (btw, why are
you using try catch? just to handle all those return statements? )

But I have the feeling we'll need to re-register the form and investigate more... perhaps
additional hidden issues are left un-investigated if we just clear that value 

> Multiple submit buttons inside async form can invoke incorrect listener
> -----------------------------------------------------------------------
>
>                 Key: TAPESTRY-1775
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1775
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework, JavaScript
>    Affects Versions: 4.1.3
>            Reporter: Andreas Andreou
>            Assignee: Andreas Andreou
>             Fix For: 4.1.4
>
>         Attachments: form.js.diff
>
>
> ... this can happen when the updateComponents of the buttons doesnt cover the form.
> So, in such a case, when button1 is clicked it sets itself as tapestry.forms.form['Form'].clickedButton
> and correctly does the async form submit.
> However, the xhr response does NOT include any calls to tapestry.form.registerForm since (as stated) 
> updateComponents may not really include the whole form. So, what this means is that the old value for
> tapestry.forms.form['Form'].clickedButton remains - triggering the associated listener no matter how the 
> new form is submitted.

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


[jira] Resolved: (TAPESTRY-1775) Multiple submit buttons inside async form can invoke incorrect listener

Posted by "Andreas Andreou (JIRA)" <de...@tapestry.apache.org>.
     [ https://issues.apache.org/jira/browse/TAPESTRY-1775?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andreas Andreou resolved TAPESTRY-1775.
---------------------------------------

    Resolution: Fixed

Francesco, I'm not sure if the case you commented is 100% the same as that of this issue.

The fix should probably handle it, but if you still have issues, reopen + attach something like 
https://svn.apache.org/repos/asf/tapestry/tapestry4/trunk/tapestry-framework/src/test-data/app1/
https://svn.apache.org/repos/asf/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/app1/pages/

Thx.

> Multiple submit buttons inside async form can invoke incorrect listener
> -----------------------------------------------------------------------
>
>                 Key: TAPESTRY-1775
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1775
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework, JavaScript
>    Affects Versions: 4.1.3
>            Reporter: Andreas Andreou
>            Assignee: Andreas Andreou
>             Fix For: 4.1.4
>
>         Attachments: form.js.diff
>
>
> ... this can happen when the updateComponents of the buttons doesnt cover the form.
> So, in such a case, when button1 is clicked it sets itself as tapestry.forms.form['Form'].clickedButton
> and correctly does the async form submit.
> However, the xhr response does NOT include any calls to tapestry.form.registerForm since (as stated) 
> updateComponents may not really include the whole form. So, what this means is that the old value for
> tapestry.forms.form['Form'].clickedButton remains - triggering the associated listener no matter how the 
> new form is submitted.

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