You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2011/03/21 19:45:16 UTC

svn commit: r1083895 - in /wicket/branches/wicket-1.4.x: wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/ wicket/src/main/java/org/apache/wicket/protocol/http/ wicket/src/main/java/org/apache/wicket/request/target/component/

Author: pedro
Date: Mon Mar 21 18:45:16 2011
New Revision: 1083895

URL: http://svn.apache.org/viewvc?rev=1083895&view=rev
Log:
merging WebResponse#disableCache be used in the ComponentRequestTarget preventing cached responses in the AJAX with prototype example
Issue: WICKET-3466

Modified:
    wicket/branches/wicket-1.4.x/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java

Modified: wicket/branches/wicket-1.4.x/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java?rev=1083895&r1=1083894&r2=1083895&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java (original)
+++ wicket/branches/wicket-1.4.x/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java Mon Mar 21 18:45:16 2011
@@ -22,9 +22,9 @@ import org.apache.wicket.markup.html.bas
 import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.protocol.http.WebResponse;
 import org.apache.wicket.request.target.component.ComponentRequestTarget;
 import org.apache.wicket.util.string.AppendingStringBuffer;
+import org.apache.wicket.util.value.ValueMap;
 
 
 /**
@@ -60,20 +60,8 @@ public class Index extends WicketExample
 			{
 				// Increment count
 				count++;
-
 				// The response should refresh the label displaying the counter.
-				getRequestCycle().setRequestTarget(new ComponentRequestTarget(counter)
-				{
-					@Override
-					public void respond(RequestCycle requestCycle)
-					{
-						super.respond(requestCycle);
-						WebResponse response = (WebResponse)requestCycle.getResponse();
-						response.setHeader("Pragma", "no-cache");
-						response.setHeader("Cache-Control",
-							"no-cache, no-store, max-age=0, must-revalidate");
-					}
-				});
+				getRequestCycle().setRequestTarget(new ComponentRequestTarget(counter));
 			}
 
 			/**
@@ -83,8 +71,10 @@ public class Index extends WicketExample
 			@Override
 			protected String getOnClickScript(String url)
 			{
+				ValueMap valueMap = new ValueMap();
+				valueMap.add("anticache", "" + Math.random());
 				return new AppendingStringBuffer("new Ajax.Updater('counter', '").append(
-					urlFor(ILinkListener.INTERFACE))
+					RequestCycle.get().urlFor(this, ILinkListener.INTERFACE, valueMap))
 					.append("', {method:'get'}); return false;")
 					.toString();
 			}

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java?rev=1083895&r1=1083894&r2=1083895&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java Mon Mar 21 18:45:16 2011
@@ -497,4 +497,15 @@ public class WebResponse extends Respons
 	{
 		this.ajax = ajax;
 	}
+
+	/**
+	 * Make this response non-cacheable
+	 */
+	public void disableCaching()
+	{
+		setDateHeader("Date", System.currentTimeMillis());
+		setDateHeader("Expires", 0);
+		setHeader("Pragma", "no-cache");
+		setHeader("Cache-Control", "no-cache, no-store");
+	}
 }

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java?rev=1083895&r1=1083894&r2=1083895&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/component/ComponentRequestTarget.java Mon Mar 21 18:45:16 2011
@@ -19,6 +19,7 @@ package org.apache.wicket.request.target
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.RequestCycle;
+import org.apache.wicket.protocol.http.WebResponse;
 
 /**
  * Default implementation of
@@ -74,6 +75,12 @@ public class ComponentRequestTarget impl
 				// Render the component
 				component.renderComponent();
 			}
+			// preventing the response to component from being cached
+			if (requestCycle.getResponse() instanceof WebResponse)
+			{
+				WebResponse response = (WebResponse)requestCycle.getResponse();
+				response.disableCaching();
+			}
 		}
 		finally
 		{