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();
}