You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "David Shepherdson (JIRA)" <ji...@apache.org> on 2007/10/12 13:40:51 UTC
[jira] Created: (WICKET-1066) Wicket-Ajax header always false with
BaseWicketTester
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-beta4, 1.3.0-beta3
Reporter: David Shepherdson
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.
[jira] Resolved: (WICKET-1066) Wicket-Ajax header always false with
BaseWicketTester
Posted by "Gerolf Seitz (JIRA)" <ji...@apache.org>.
[ 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.
[jira] Updated: (WICKET-1066) Wicket-Ajax header always false with
BaseWicketTester
Posted by "Frank Bille Jensen (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/WICKET-1066?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frank Bille Jensen updated WICKET-1066:
---------------------------------------
Fix Version/s: (was: 1.3.0-rc1)
1.3.0-rc2
> 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
> 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.
[jira] Closed: (WICKET-1066) Wicket-Ajax header always false with
BaseWicketTester
Posted by "David Shepherdson (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/WICKET-1066?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Shepherdson closed WICKET-1066.
-------------------------------------
Using 1.3 (final), I've removed my workarounds and everything works normally. Thank you!
> 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.