You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/02/11 07:54:43 UTC

svn commit: r1069685 - /wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java

Author: ivaynberg
Date: Fri Feb 11 06:54:43 2011
New Revision: 1069685

URL: http://svn.apache.org/viewvc?rev=1069685&view=rev
Log:

Issue: WICKET-3442

Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java

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=1069685&r1=1069684&r2=1069685&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 Fri Feb 11 06:54:43 2011
@@ -233,12 +233,15 @@ public class WebPageRenderer extends Pag
 		}
 		else if (!targetUrl.equals(currentUrl) //
 			&&
-			isSessionTemporary() && getPage().isPageStateless())
+			(getPageProvider().isNewPageInstance() || (isSessionTemporary() && getPage().isPageStateless())))
 		{
 			// if target URL is different and session is temporary and page is stateless
 			// this is special case when page is stateless but there is no session so we can't
 			// render it to buffer
 
+			// alternatively if URLs are different and we have a page class and not an instance we
+			// can redirect to the url which will instantiate the instance of us
+
 			// note: if we had session here we would render the page to buffer and then redirect to
 			// URL generated *after* page has been rendered (the statelessness may change during
 			// render). this would save one redirect because now we have to render to URL generated
@@ -300,12 +303,18 @@ public class WebPageRenderer extends Pag
 	 * When the page renders to buffer and it is still stateless after rendering, this flag
 	 * determines whether the redirect will take place or not.
 	 * <p>
-	 * Normally there is no reason for a stateless page to redirect
+	 * By default we will redirect. This is so we do not end up having the browser be on a listener
+	 * URL. A simple scenario is calling {@code setResponsePage(new StatelessPage())} inside form's
+	 * {@code onSubmit()} or link's {@code onClick()} callbacks, or any other listener interface
+	 * calback. What will happen is that the browser will be on URL like
+	 * {@code ./wicket/page?0-2.IFormSubmitListener-form}, and we will not redirect - leaving the
+	 * browser on such URL. This is a worse alternative then saving one redirect because it may
+	 * cause problems if user presses the refresh button in the browser.
 	 * 
-	 * @return boolean value
+	 * @return redirect flag
 	 */
 	protected boolean enableRedirectForStatelessPage()
 	{
-		return false;
+		return true;
 	}
 }