BaseWicketTester doesn't call detach() for AJAX requests
--------------------------------------------------------

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


BaseWicketTester doesn't call detach() on the request cycle when clicking an 
AJAX link. This does not match the behaviour when running in a 'real' servlet 
container, when detach() *does* get called for the same AJAX requests.

One side effect of this is that AJAX header contributions are left in the page 
and cause problems when the next request occurs. For example, we have a page 
that we want to test. It contains an AJAX link and a (non-AJAX) form. We click 
the link, then fill in and submit the form. However, an exception is thrown 
when submitting the form as it tries to render the AJAX header contribution 
left over from the AJAX page. (Exception comes from checkHeaderRendering() in 
AjaxHeaderResponse.)

We are working around this problem by overriding BaseWicketTester's 
clickLink(String, boolean) method, so as to hang onto the RequestCycle and call 
its detach() method once the response has been made for AJAX requests; for 
example:


    RequestCycle requestCycle = null;

    if (linkComponent instanceof AjaxLink) {
        ...
        setupRequestAndResponse();
        requestCycle = createRequestCycle();
        AjaxRequestTarget target = new AjaxRequestTarget(link.getPage());
        requestCycle.setRequestTarget(target);

        link.onClick(target);

        target.respond(requestCycle);
    }
    ...
    if (requestCycle != null) {
        // Detach the requestCycle, so that state isn't left around
        // for any further use of this page.
        requestCycle.detach();
    }


This should be a very simple one-line fix (well, 1 x the number of AJAX 
requests made in BaseWicketTester's clickLink(...) method, which is 3).


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