Author: mgrigorov Date: Thu Oct 27 13:21:07 2011 New Revision: 1189742 URL: http://svn.apache.org/viewvc?rev=1189742&view=rev Log: WICKET-4173 Incorrect URL for setResponsePage() within a Form#onSubmit( )
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java?rev=1189742&r1=1189741&r2=1189742&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java Thu Oct 27 13:21:07 2011 @@ -601,7 +601,7 @@ public class RequestCycle implements IRe { IPageProvider provider = new PageProvider(pageClass, null); scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(provider, - RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT)); + RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT)); } @@ -616,7 +616,7 @@ public class RequestCycle implements IRe { IPageProvider provider = new PageProvider(pageClass, parameters); scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(provider, - RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT)); + RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT)); } /** Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java?rev=1189742&r1=1189741&r2=1189742&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java Thu Oct 27 13:21:07 2011 @@ -164,7 +164,7 @@ public class WebPageRenderer extends Pag bufferedResponse.writeTo((WebResponse)requestCycle.getResponse()); } else if (getRedirectPolicy() == RedirectPolicy.NEVER_REDIRECT || - (isOnePassRender() && isAjax == false) // + (isOnePassRender() && isAjax == false && getRedirectPolicy() != RedirectPolicy.ALWAYS_REDIRECT) // || (!isAjax // && Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java?rev=1189742&r1=1189741&r2=1189742&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java (original) +++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java Thu Oct 27 13:21:07 2011 @@ -110,6 +110,41 @@ public class WebPageRendererTest } /** + * Tests that even when {@link IRequestCycleSettings.RenderStrategy#ONE_PASS_RENDER} is + * configured but the {@link RedirectPolicy} says that it needs to redirect it will redirect. + */ + @Test + public void testOnePassRenderWithAlwaysRedirect() + { + + PageRenderer renderer = new TestPageRenderer(handler) + { + @Override + protected boolean isOnePassRender() + { + return true; + } + + @Override + protected RedirectPolicy getRedirectPolicy() + { + return RedirectPolicy.ALWAYS_REDIRECT; + } + }; + + when(urlRenderer.getBaseUrl()).thenReturn(Url.parse("base")); + + when(requestCycle.mapUrlFor(eq(handler))).thenReturn(Url.parse("base/a")); + + when(request.shouldPreserveClientUrl()).thenReturn(false); + + renderer.respond(requestCycle); + + verify(response, never()).write(any(byte[].class)); + verify(response).sendRedirect(anyString()); + } + + /** * Tests that when {@link IRequestCycleSettings.RenderStrategy#ONE_PASS_RENDER} is configured * but the current request is Ajax then a redirect should be issued */