You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/04/25 11:03:36 UTC

[2/2] git commit: WICKET-5553 When using an Ajax request to display initially hidden components inside inline enclosures, only the first one appears.

WICKET-5553 When using an Ajax request to display initially hidden components inside inline enclosures, only the first one appears.


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

Branch: refs/heads/wicket-6.x
Commit: 197906d5217dd205280394ad74955fa9a449ce1e
Parents: 83511b7
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri Apr 25 12:03:09 2014 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri Apr 25 12:03:09 2014 +0300

----------------------------------------------------------------------
 .../protocol/http/AjaxEnclosureListener.java    | 24 ++++++++++++--------
 1 file changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/197906d5/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
index f2dbfcb..275c0ad 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.protocol.http;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.wicket.Component;
@@ -67,31 +70,32 @@ public class AjaxEnclosureListener implements AjaxRequestTarget.IListener
 	@Override
 	public void onBeforeRespond(final Map<String, Component> map, final AjaxRequestTarget target)
 	{
-		String key = target.getPage().visitChildren(InlineEnclosure.class, new IVisitor<InlineEnclosure, String>()
+		final List<String> keysToRemove = new ArrayList<String>();
+
+		target.getPage().visitChildren(InlineEnclosure.class, new IVisitor<InlineEnclosure, Void>()
 		{
 			@Override
-			public void component(final InlineEnclosure enclosure, final IVisit<String> visit)
+			public void component(final InlineEnclosure enclosure, final IVisit<Void> visit)
 			{
-				for (Map.Entry<String, Component> entry : map.entrySet())
+				Iterator<Map.Entry<String, Component>> entriesItor = map.entrySet().iterator();
+				while (entriesItor.hasNext())
 				{
-					String key = entry.getKey();
+					Map.Entry<String, Component> entry = entriesItor.next();
+					String componentId = entry.getKey();
 					Component component = entry.getValue();
-
 					if (isControllerOfEnclosure(component, enclosure))
 					{
-						// update the visibility of the enclosure
 						enclosure.updateVisibility();
-
-						// add enclosure to Ajax target
 						target.add(enclosure);
-						visit.stop(key);
+						visit.dontGoDeeper();
+						keysToRemove.add(componentId);
 						break;
 					}
 				}
 			}
 		});
 
-		if (key != null)
+		for (String key : keysToRemove)
 		{
 			map.remove(key);
 		}