Author: mgrigorov
Date: Tue Jan 18 10:54:45 2011
New Revision: 1060302

URL: http://svn.apache.org/viewvc?rev=1060302&view=rev
Log:
WICKET-3339 Url interception doesn't work if the "intercepting" page is 
stateless

Always redirect to render if there is a page interception.

Reason:
 page interception is mostly used in the cases when the user tries to reach a 
page which is secured somehow. In this case the request is intercepted and the 
user is lead to a login page which in most cases is stateless. We need to 
redirect in this case because stateless pages by default are rendered directly 
(without redirect) and all links in the rendered page are calculated against 
the url of the interception page but browser still thinks this is the secured 
page with its url.

Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java?rev=1060302&r1=1060301&r2=1060302&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/RestartResponseAtInterceptPageException.java
 Tue Jan 18 10:54:45 2011
@@ -31,6 +31,7 @@ import org.apache.wicket.request.cycle.R
 import org.apache.wicket.request.flow.ResetResponseException;
 import org.apache.wicket.request.handler.PageProvider;
 import org.apache.wicket.request.handler.RenderPageRequestHandler;
+import 
org.apache.wicket.request.handler.RenderPageRequestHandler.RedirectPolicy;
 import org.apache.wicket.request.http.handler.RedirectRequestHandler;
 import org.apache.wicket.util.string.StringValue;
 
@@ -40,13 +41,15 @@ public class RestartResponseAtInterceptP
 
        public RestartResponseAtInterceptPageException(Page interceptPage)
        {
-               super(new RenderPageRequestHandler(new 
PageProvider(interceptPage)));
+               super(new RenderPageRequestHandler(new 
PageProvider(interceptPage),
+                       RedirectPolicy.ALWAYS_REDIRECT));
                InterceptData.set();
        }
 
        public RestartResponseAtInterceptPageException(Class<? extends Page> 
interceptPageClass)
        {
-               super(new RenderPageRequestHandler(new 
PageProvider(interceptPageClass)));
+               super(new RenderPageRequestHandler(new 
PageProvider(interceptPageClass),
+                       RedirectPolicy.ALWAYS_REDIRECT));
                InterceptData.set();
        }
 


Reply via email to