You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2015/02/10 22:57:29 UTC

wicket git commit: WICKET-5314 AbstractAutoCompleteBehavior does not support AjaxChannels

Repository: wicket
Updated Branches:
  refs/heads/master bd577a413 -> b8be53463


WICKET-5314 AbstractAutoCompleteBehavior does not support AjaxChannels


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

Branch: refs/heads/master
Commit: b8be5346311406fe394741009f943fdf5dc71809
Parents: bd577a4
Author: Andrea Del Bene <ad...@apache.org>
Authored: Tue Feb 10 22:57:04 2015 +0100
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Tue Feb 10 22:57:04 2015 +0100

----------------------------------------------------------------------
 .../AbstractAutoCompleteBehavior.java           | 13 ++++-
 .../html/autocomplete/wicket-autocomplete.js    | 61 ++++++--------------
 2 files changed, 28 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b8be5346/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
index dd648fa..82ed509 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
@@ -24,6 +24,7 @@ import org.apache.wicket.Application;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.IWrappedHeaderItem;
@@ -151,8 +152,8 @@ public abstract class AbstractAutoCompleteBehavior extends AbstractDefaultAjaxBe
 			indicatorId = "'" + indicatorId + "'";
 		}
 
-		String initJS = String.format("new Wicket.AutoComplete('%s','%s',%s,%s);", id,
-			getCallbackUrl(), constructSettingsJS(), indicatorId);
+		String initJS = String.format("new Wicket.AutoComplete('%s', %s, %s, %s);", id,
+			renderAjaxAttributes(getComponent(), getAttributes()), constructSettingsJS(), indicatorId);
 
 		final OnDomReadyHeaderItem onDomReady = OnDomReadyHeaderItem.forScript(initJS);
 
@@ -209,5 +210,13 @@ public abstract class AbstractAutoCompleteBehavior extends AbstractDefaultAjaxBe
 
 		onRequest(val, requestCycle);
 	}
+	
+	@Override
+    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) 
+	{
+        super.updateAjaxAttributes(attributes);
 
+        attributes.setWicketAjaxResponse(false);
+        attributes.setDataType("html");
+    }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8be5346/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
index 97a5e28..c5d89fb 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
@@ -35,7 +35,7 @@
 		enterHidesWithNoSelection : false
 	};
 
-	Wicket.AutoComplete=function(elementId, callbackUrl, cfg, indicatorId){
+	Wicket.AutoComplete=function(elementId, ajaxAttributes, cfg, indicatorId){
 		var KEY_TAB=9;
 		var KEY_ENTER=13;
 		var KEY_ESC=27;
@@ -333,64 +333,37 @@
 		}
 
 		function actualUpdateChoicesShowAll() {
-			showIndicator();
-
-			var paramName = cfg.parameterName;
-			var attrs = {
-				u: callbackUrl,
-				pre: [ function (attributes) {
-					// since attrs.c is not set, we have to check existence by ourself
-					if (!Wicket.$$(elementId)) {
-						return false;
-					}
-					
-					var activeIsInitial = (document.activeElement === initialElement);
-					var elementVal =  Wicket.$(elementId).value;
-					var hasMinimumLength = elementVal.length >= minInputLength;
-
-					var result = hasMinimumLength && activeIsInitial;
-					if (!result) {
-						hideAutoComplete();
-					}
-					return result;
-				}],
-				ep: {},
-				wr: false,
-				dt: 'html',
-				sh: [ doUpdateAllChoices ]
-			};
-			attrs.ep[paramName] = '';
-			Wicket.Ajax.ajax(attrs);
+			prepareAndExecuteAjaxUpdate(doUpdateAllChoices, '');
 		}
 
 		function actualUpdateChoices() {
+			prepareAndExecuteAjaxUpdate(doUpdateChoices, Wicket.$(elementId).value);
+		}
+		
+		function prepareAndExecuteAjaxUpdate(successHandler, currentInput){
 			showIndicator();
 
-			var paramName = cfg.parameterName;
-			var attrs = {
-				u: callbackUrl,
+			var settings = jQuery.extend(true, {
 				pre: [ function (attributes) {
-					// since attrs.c is not set, we have to check existence by ourself
-					if (!Wicket.$$(elementId)) {
-						return false;
-					}
-
 					var activeIsInitial = (document.activeElement === initialElement);
-					var elementVal =  Wicket.$(elementId).value;
+					var elementVal = Wicket.$(elementId).value;
 					var hasMinimumLength = elementVal.length >= minInputLength;
+				
 					var result = hasMinimumLength && activeIsInitial;
+					
 					if (!result) {
 						hideAutoComplete();
 					}
+					
 					return result;
 				}],
 				ep: {},
-				wr: false,
-				dt: 'html',
-				sh: [ doUpdateChoices ]
-			};
-			attrs.ep[paramName] = Wicket.$(elementId).value;
-			Wicket.Ajax.ajax(attrs);
+				sh: [ successHandler ]
+				}, ajaxAttributes);
+				
+				settings.ep[cfg.parameterName] = currentInput;
+				
+				Wicket.Ajax.ajax(settings);
 		}
 
 		function showIndicator() {