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