Author: jbq
Date: Fri Mar 9 13:10:38 2007
New Revision: 516551
URL: http://svn.apache.org/viewvc?view=rev&rev=516551
Log:
Fix WICKET-313 Use standard exception handling in AjaxRequestTarget
Reset the HTTP response status code to 200, otherwise wicket-ajax.js does not
process the Ajax-Location header. Also added unit test for this usecase.
Modified:
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/WebResponse.java
incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseExceptionsTest.java
Modified:
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/WebResponse.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/WebResponse.java?view=diff&rev=516551&r1=516550&r2=516551
==============================================================================
---
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/WebResponse.java
(original)
+++
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/protocol/http/WebResponse.java
Fri Mar 9 13:10:38 2007
@@ -192,6 +192,10 @@
if (isAjax())
{
+ // Reset the HTTP response
status code to 200, otherwise
+ // wicket-ajax.js does not
process the Ajax-Location
+ // header
+
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
httpServletResponse.addHeader("Ajax-Location", url);
// safari chokes on empty
response. but perhaps this is
Modified:
incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseExceptionsTest.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseExceptionsTest.java?view=diff&rev=516551&r1=516550&r2=516551
==============================================================================
---
incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseExceptionsTest.java
(original)
+++
incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseExceptionsTest.java
Fri Mar 9 13:10:38 2007
@@ -22,6 +22,8 @@
import wicket.WicketTestCase;
import wicket.ajax.AjaxEventBehavior;
import wicket.ajax.markup.html.AjaxLink;
+import wicket.settings.IExceptionSettings;
+import wicket.settings.IRequestCycleSettings;
import wicket.util.tester.WicketTester;
/**
@@ -33,7 +35,7 @@
{
private static final Log log =
LogFactory.getLog(WebResponseExceptionsTest.class);
- public void testErrorPage()
+ public void testInternalErrorPage()
{
tester.startPage(TestErrorPage.class);
AjaxLink link =
(AjaxLink)tester.getComponentFromLastRenderedPage("link");
@@ -59,6 +61,17 @@
assertAjaxLocation(tester);
}
+ public void testBufferedExceptionErrorPage() {
+
tester.getApplication().getRequestCycleSettings().setRenderStrategy(IRequestCycleSettings.REDIRECT_TO_BUFFER);
+
tester.getApplication().getExceptionSettings().setUnexpectedExceptionDisplay(IExceptionSettings.SHOW_EXCEPTION_PAGE);
+ testInternalErrorPage();
+ }
+
+ public void testExceptionErrorPage() {
+
tester.getApplication().getExceptionSettings().setUnexpectedExceptionDisplay(IExceptionSettings.SHOW_EXCEPTION_PAGE);
+ testInternalErrorPage();
+ }
+
public void testExpirePage()
{
tester.startPage(TestExpirePage.class);
@@ -97,5 +110,7 @@
String ajaxLocation =
((MockHttpServletResponse)tester.getWicketResponse().getHttpServletResponse()).getHeader("Ajax-Location");
log.debug(ajaxLocation);
assertNotNull("Ajax-Location header should be present when
using Ajax", ajaxLocation);
+ int statusCode =
((MockHttpServletResponse)tester.getWicketResponse().getHttpServletResponse()).getStatus();
+ assertEquals(200, statusCode);
}
}