AjaxSubmitLink doesn't always find enclosing form properly
----------------------------------------------------------

                 Key: WICKET-1397
                 URL: https://issues.apache.org/jira/browse/WICKET-1397
             Project: Wicket
          Issue Type: Bug
    Affects Versions: 1.3.0-final
            Reporter: David Shepherdson
            Priority: Minor


If the AjaxSubmitLink constructor that doesn't take in a form is called, it 
calls the constructor that does take in a form with null for the form. This 
seems correct, and it passes the form argument into the constructor of the 
AjaxFormSubmitBehavior as also seems correct. AjaxFormSubmitBehavior has a 
private getForm() method that, if the form is null, sensibly searches through 
the component hierarchy to find a form that contains the component. This is 
also good. :-)

The bit that seems wrong is that the overridden onSubmit(AjaxRequestTarget) and 
onError(AjaxRequestTarget) methods in AjaxSubmitLink's version of 
AjaxFormSubmitBehavior call AjaxSubmitLink's onSubmit and onError with the form 
argument that was originally passed into the constructor. This means that if 
you originally called the one-argument constructor for AjaxSubmitLink, the 
onSubmit and onError methods will be called with a null form, rather than the 
actual form that was submitted.

As far as I can see, an easy fix for this would be to make getForm() in 
AjaxFormSubmitBehavior protected rather than private, and then to call 
getForm() in the overridden onSubmit and onError in AjaxSubmitLink's version of 
AjaxFormSubmitBehavior. That way the AjaxSubmitLink's onSubmit and onError 
would always be called with the actual form that was submitted.

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