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 2015/10/15 14:33:09 UTC

wicket git commit: WICKET-5999 fix IFeedback visitor in AjaxFormValidatingBehavior by calling #configure()

Repository: wicket
Updated Branches:
  refs/heads/master b0878a845 -> d636c3d43


WICKET-5999 fix IFeedback visitor in AjaxFormValidatingBehavior by calling #configure()


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

Branch: refs/heads/master
Commit: d636c3d43543b8a1da77276b405b0ef160fb451b
Parents: b0878a8
Author: Aleksander Morozov <al...@gmail.com>
Authored: Wed Oct 14 12:10:06 2015 +0300
Committer: Sven Meier <sv...@apache.org>
Committed: Thu Oct 15 13:56:46 2015 +0200

----------------------------------------------------------------------
 .../ajax/form/AjaxFormValidatingBehavior.java   |  3 +
 .../form/AjaxFormValidatingBehaviorTest.java    | 54 +++++++++++
 .../AjaxFormValidatingBehaviorTestPage.html     | 16 ++++
 .../AjaxFormValidatingBehaviorTestPage.java     | 97 ++++++++++++++++++++
 4 files changed, 170 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d636c3d4/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java
index 77f96dd..1900e6d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java
@@ -144,6 +144,7 @@ public class AjaxFormValidatingBehavior extends Behavior
 			@Override
 			public void component(final Component component, final IVisit<Void> visit)
 			{
+				component.configure(); // feedback component might change its visibility
 				if (component.isVisibleInHierarchy())
 				{
 					target.add(component);
@@ -162,6 +163,8 @@ public class AjaxFormValidatingBehavior extends Behavior
 
 	private class FormValidateVisitor implements IVisitor<FormComponent, Void>, IClusterable
 	{
+		private static final long serialVersionUID = 1L;
+
 		@Override
 		public void component(final FormComponent component, final IVisit<Void> visit)
 		{

http://git-wip-us.apache.org/repos/asf/wicket/blob/d636c3d4/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTest.java
new file mode 100644
index 0000000..a00a8f5
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTest.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.ajax.form;
+
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Test;
+
+/**
+ * @author shuraa
+ */
+public class AjaxFormValidatingBehaviorTest extends WicketTestCase
+{
+
+	/**
+	 * @throws Exception
+	 */
+	@Test
+	public void ajaxUpdateOrdinaryFeedbackComponents() throws Exception
+	{
+		tester.startPage(AjaxFormValidatingBehaviorTestPage.class);
+		tester.assertRenderedPage(AjaxFormValidatingBehaviorTestPage.class);
+		tester.assertVisible("form1:feedback");
+		tester.executeAjaxEvent("form1:input", "blur");
+		tester.assertVisible("form1:feedback");
+	}
+
+	/**
+	 * @throws Exception
+	 */
+	@Test
+	public void ajaxUpdateInitiallyInvisibleFeedbackComponents() throws Exception
+	{
+		tester.startPage(AjaxFormValidatingBehaviorTestPage.class);
+		tester.assertRenderedPage(AjaxFormValidatingBehaviorTestPage.class);
+		tester.assertInvisible("form2:feedback");
+		tester.executeAjaxEvent("form2:input", "blur");
+		tester.assertVisible("form2:feedback");
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d636c3d4/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.html b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.html
new file mode 100644
index 0000000..9b17cb2
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.html
@@ -0,0 +1,16 @@
+<html>
+    <head>
+        <title>Wicket Quickstart Archetype Homepage</title>
+    </head>
+    <body>
+    	<form wicket:id="form1">
+    		<div wicket:id="feedback"></div>
+    		<input type="text" wicket:id="input">
+    	</form>
+    	<form wicket:id="form2">
+    		<div wicket:id="feedback"></div>
+    		<input type="text" wicket:id="input">
+    	</form>
+    </body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/wicket/blob/d636c3d4/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.java b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.java
new file mode 100644
index 0000000..4960445
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehaviorTestPage.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.ajax.form;
+
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.feedback.ContainerFeedbackMessageFilter;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.Model;
+
+/**
+ * @author shuraa
+ *
+ */
+public class AjaxFormValidatingBehaviorTestPage extends WebPage
+{
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Constructor
+	 */
+	public AjaxFormValidatingBehaviorTestPage()
+	{
+		super();
+		addFormWithOrdinaryFeedbackPanel();
+		addFormWithHiddenFeedbackPanel();
+	}
+
+	private void addFormWithOrdinaryFeedbackPanel()
+	{
+		Form<Void> form = new Form<>("form1");
+		form.add(new AjaxFormValidatingBehavior("blur"));
+		form.add(new FeedbackPanel("feedback", new ContainerFeedbackMessageFilter(form)).setOutputMarkupId(true));
+		add(form);
+
+		TextField<String> input = new TextField<>("input", new Model<String>());
+		input.setRequired(true);
+		form.add(input);
+	}
+	
+	private void addFormWithHiddenFeedbackPanel()
+	{
+		Form<Void> form = new Form<>("form2");
+		form.add(new AjaxFormValidatingBehavior("blur"));
+		form.add(new HiddenFeedbackPanel("feedback", form));
+		add(form);
+
+		TextField<String> input = new TextField<>("input", new Model<String>());
+		input.setRequired(true);
+		form.add(input);
+	}
+
+	/**
+	 * Feedback panel that initially hidden.
+	 */
+	public static final class HiddenFeedbackPanel extends FeedbackPanel
+	{
+
+		private static final long serialVersionUID = 1L;
+
+		/**
+		 * @param id
+		 * @param markupContainer 
+		 */
+		public HiddenFeedbackPanel(String id, MarkupContainer markupContainer)
+		{
+			super(id, new ContainerFeedbackMessageFilter(markupContainer));
+			setOutputMarkupPlaceholderTag(true);
+		}
+
+		@Override
+		protected void onConfigure()
+		{
+			super.onConfigure();
+			setVisible(anyMessage());
+		}
+
+	}
+
+}