You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2010/09/20 22:07:29 UTC
svn commit: r999095 -
/wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
Author: pete
Date: Mon Sep 20 20:07:29 2010
New Revision: 999095
URL: http://svn.apache.org/viewvc?rev=999095&view=rev
Log:
WICKET-3058: In case of ajax force DefaultExceptionMapper to do a full redirect to the error page. Additionally, fix lookup of current page in case of ajax.
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java?rev=999095&r1=999094&r2=999095&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/DefaultExceptionMapper.java Mon Sep 20 20:07:29 2010
@@ -26,6 +26,7 @@ import org.apache.wicket.request.handler
import org.apache.wicket.request.handler.IPageRequestHandler;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler;
+import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.request.http.handler.ErrorCodeResponseHandler;
import org.apache.wicket.request.mapper.StalePageException;
import org.apache.wicket.settings.IExceptionSettings;
@@ -135,7 +136,22 @@ public class DefaultExceptionMapper impl
private RenderPageRequestHandler createPageRequestHandler(PageProvider pageProvider)
{
- return new RenderPageRequestHandler(pageProvider, redirectPolicy);
+ RequestCycle requestCycle = RequestCycle.get();
+
+ if (requestCycle == null)
+ throw new IllegalStateException("there is no current request cycle attached to this thread");
+
+ RenderPageRequestHandler.RedirectPolicy redirect = redirectPolicy;
+
+ // in case of ajax we must redirect to show the error page
+ if (requestCycle.getRequest() instanceof WebRequest)
+ {
+ WebRequest webRequest = (WebRequest)requestCycle.getRequest();
+
+ if(webRequest.isAjax())
+ redirect = RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT;
+ }
+ return new RenderPageRequestHandler(pageProvider, redirect);
}
/**
@@ -145,16 +161,17 @@ public class DefaultExceptionMapper impl
private Page extractCurrentPage()
{
final RequestCycle requestCycle = RequestCycle.get();
- final IRequestHandler activeRequestHandler = requestCycle.getActiveRequestHandler();
- Page currentPage = null;
+ IRequestHandler handler = requestCycle.getActiveRequestHandler();
- if (activeRequestHandler instanceof IPageRequestHandler)
+ if(handler == null)
+ handler = requestCycle.getRequestHandlerScheduledAfterCurrent();
+
+ if (handler instanceof IPageRequestHandler)
{
- IPageRequestHandler pageRequestHandler = (IPageRequestHandler)activeRequestHandler;
- currentPage = (Page)pageRequestHandler.getPage();
+ IPageRequestHandler pageRequestHandler = (IPageRequestHandler)handler;
+ return (Page)pageRequestHandler.getPage();
}
-
- return currentPage;
+ return null;
}
}