You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Gerolf Seitz (JIRA)" <ji...@apache.org> on 2007/12/04 22:36:43 UTC
[jira] Resolved: (WICKET-1066) Wicket-Ajax header always false with
BaseWicketTester
[ https://issues.apache.org/jira/browse/WICKET-1066?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gerolf Seitz resolved WICKET-1066.
----------------------------------
Resolution: Duplicate
Assignee: Gerolf Seitz
duplicate of WICKET-1199
> Wicket-Ajax header always false with BaseWicketTester
> -----------------------------------------------------
>
> Key: WICKET-1066
> URL: https://issues.apache.org/jira/browse/WICKET-1066
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.3.0-beta3, 1.3.0-beta4
> Reporter: David Shepherdson
> Assignee: Gerolf Seitz
> Fix For: 1.3.0-rc2
>
>
> The 'Wicket-Ajax' header is always missing when using BaseWicketTester, even when the request should be an AJAX request.
> The specific case we have is an AjaxLink that, when clicked, shows a modal window. We call BaseWicketTester's clickLink(String) method to simulate clicking the link. The link's onClick(...) method is called with an appropriate AjaxRequestTarget; however, ModalWindow's onBeforeRender() tests whether the request is an AJAX request (using ((WebRequest)getRequest()).isAjax()) and, if it's not, hides the content panel.
> The problem is that the isAjax() call tests whether the HttpServletRequest's 'Wicket-Ajax' header is present and 'true'; when running this code with BaseWicketTester, the header is never there, and so the modal window's content is never shown.
> We have worked around the problem by overriding clickLink(String, boolean) and setupRequestAndResponse() as follows:
> private boolean m_handlingAjaxRequest = false;
>
> @Override
> public synchronized void clickLink(String path, boolean isAjax)
> {
> m_handlingAjaxRequest = isAjax;
> super.clickLink(path, isAjax);
> m_handlingAjaxRequest = false;
> }
>
> @Override
> public synchronized WebRequestCycle setupRequestAndResponse() {
> WebRequestCycle result = super.setupRequestAndResponse();
> if (m_handlingAjaxRequest) {
> // Set AJAX header.
> getServletRequest().addHeader(
> "Wicket-Ajax", "true");
> // *Don't* copy it to the response, even though
> // MockWebApplication's setupRequestAndResponse() does.
> }
> return result;
> }
> (I found that if I copied the 'Wicket-Ajax' header to the response, as done by MockWebApplication's setupRequestAndResponse(), it caused all AJAX clicks to misbehave.)
> Hence, it would seem that if BaseWicketTester's clickLink(String, boolean) method were modified to set the 'Wicket-Ajax' header as appropriate, modal windows -- and, presumably, any other things that rely on the request returning true from isAjax() -- would work as expected.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.