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 2014/06/09 15:39:56 UTC

git commit: [WICKET-5603] OnChangeAjaxBehavior attached to DropDownChoice produces two Ajax requests in the last versions of Chrome, Opera and IE

Repository: wicket
Updated Branches:
  refs/heads/master 785c04ae9 -> 240ab3c39


[WICKET-5603] OnChangeAjaxBehavior attached to DropDownChoice produces two Ajax requests in the last versions of Chrome, Opera and IE


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

Branch: refs/heads/master
Commit: 240ab3c39865e6edc306c3aefaaffe3a82c4a729
Parents: 785c04a
Author: Andrea Del Bene <an...@gmail.com>
Authored: Mon Jun 9 15:38:28 2014 +0200
Committer: Andrea Del Bene <an...@gmail.com>
Committed: Mon Jun 9 15:38:28 2014 +0200

----------------------------------------------------------------------
 .../wicket/ajax/form/OnChangeAjaxBehavior.java  | 27 ++++++++++++++++++--
 .../ajax/form/OnChangeAjaxBehaviorTest.java     |  4 ++-
 .../OnChangeAjaxBehaviorTestPage_expected.html  |  4 +--
 3 files changed, 30 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/240ab3c3/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
index 965ae56..863eded 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
@@ -16,7 +16,11 @@
  */
 package org.apache.wicket.ajax.form;
 
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.html.form.FormComponent;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
 
 /**
  * A behavior that updates the hosting {@link FormComponent} via Ajax when value of the component is
@@ -42,14 +46,33 @@ public abstract class OnChangeAjaxBehavior extends AjaxFormComponentUpdatingBeha
 	 * for text input form component depending on the browser.
 	 * 'change' is used as a fallback for all other form component types.
 	 */
-	public static final String EVENT_NAME = "inputchange change";
+	public static final String EVENT_INPUTCHANGE = "inputchange";
+	public static final String EVENT_CHANGE = "change";
 
 	/**
 	 * Constructor.
 	 */
 	public OnChangeAjaxBehavior()
 	{
-		super(EVENT_NAME);
+		super(EVENT_INPUTCHANGE + " " + EVENT_CHANGE);
 	}
 
+	@Override
+	protected void updateAjaxAttributes(AjaxRequestAttributes attributes) 
+	{
+		super.updateAjaxAttributes(attributes);
+		
+		Component component = getComponent();
+		
+		//textfiels and textareas will trigger this behavior with event 'inputchange'
+		//while all the other components will use 'change'
+		if (component instanceof TextField || component instanceof TextArea) 
+		{
+			attributes.setEventNames(EVENT_INPUTCHANGE);
+		} 
+		else 
+		{
+			attributes.setEventNames(EVENT_CHANGE);
+		}
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/240ab3c3/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTest.java
index 9f4cc4b..e04e064 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTest.java
@@ -33,7 +33,9 @@ public class OnChangeAjaxBehaviorTest extends WicketTestCase
 	public void rendering() throws Exception
 	{
 		tester.getSession().setLocale(Locale.ENGLISH);
-
+		
+		//ensure that TextField and DropDownChoice have 
+		//the appropriate event handlers
 		executeTest(OnChangeAjaxBehaviorTestPage.class,
 			"OnChangeAjaxBehaviorTestPage_expected.html");
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/240ab3c3/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
index d8a7232..ec3a412 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
@@ -16,8 +16,8 @@ Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.form.OnChangeAja
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-field","m":"POST","c":"field1","e":"inputchange change"});;
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-dropDown","m":"POST","c":"dropDown2","e":"inputchange change"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-field","m":"POST","c":"field1","e":"inputchange"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-dropDown","m":"POST","c":"dropDown2","e":"change"});;
 ;});
 /*]]>*/
 </script>