You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2017/10/18 18:42:32 UTC

wicket git commit: WICKET-6479 do not send request when name has not changed

Repository: wicket
Updated Branches:
  refs/heads/master 49d398333 -> eb64b2af4


WICKET-6479 do not send request when name has not changed


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/eb64b2af
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/eb64b2af
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/eb64b2af

Branch: refs/heads/master
Commit: eb64b2af424f1492e60c6a2038c466878a855b01
Parents: 49d3983
Author: Sven Meier <sv...@apache.org>
Authored: Wed Oct 18 20:19:53 2017 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Wed Oct 18 20:22:04 2017 +0200

----------------------------------------------------------------------
 .../ajax/AjaxNewWindowNotifyingBehavior.java    | 27 ++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/eb64b2af/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
index 357120a..4f8cb06 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
@@ -20,6 +20,7 @@ import java.util.UUID;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnLoadHeaderItem;
@@ -49,6 +50,16 @@ public class AjaxNewWindowNotifyingBehavior extends AbstractDefaultAjaxBehavior
 	private String boundName;
 
 	/**
+	 * Returns the window's name.
+	 * 
+	 * @return name of {@value null} if not yet bound to a window
+	 */
+	public String getWindowName()
+	{
+		return boundName;
+	}
+	
+	/**
 	 * Overridden to add the current window name to the request.
 	 */
 	@Override
@@ -58,6 +69,19 @@ public class AjaxNewWindowNotifyingBehavior extends AbstractDefaultAjaxBehavior
 
 		String parameter = "return {'" + PARAM_WINDOW_NAME + "': window.name}";
 		attributes.getDynamicExtraParameters().add(parameter);
+
+		if (boundName != null)
+		{
+			// already bound, send request only when changed
+			attributes.getAjaxCallListeners().add(new AjaxCallListener()
+			{
+				@Override
+				public CharSequence getPrecondition(Component component)
+				{
+					return String.format("return (window.name !== '%s');", boundName);
+				}
+			});
+		}
 	}
 
 	/**
@@ -75,8 +99,7 @@ public class AjaxNewWindowNotifyingBehavior extends AbstractDefaultAjaxBehavior
 	@Override
 	protected void respond(AjaxRequestTarget target)
 	{
-		String windowName = getComponent().getRequest().getRequestParameters()
-			.getParameterValue(PARAM_WINDOW_NAME).toString();
+		String windowName = getComponent().getRequest().getRequestParameters().getParameterValue(PARAM_WINDOW_NAME).toString();
 
 		if (boundName == null)
 		{