You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/08/25 06:27:13 UTC

svn commit: r988787 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java

Author: ivaynberg
Date: Wed Aug 25 04:27:13 2010
New Revision: 988787

URL: http://svn.apache.org/viewvc?rev=988787&view=rev
Log:
Form.MULTIPART_HINT is not cleared correctly with nested forms
Issue: WICKET-2933

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java?rev=988787&r1=988786&r2=988787&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java Wed Aug 25 04:27:13 2010
@@ -1293,21 +1293,35 @@ public class Form<T> extends WebMarkupCo
 					if (component instanceof Form<?>)
 					{
 						Form<?> form = (Form<?>)component;
-						isMultiPart = (form.multiPart != 0);
+						if (form.isVisibleInHierarchy() && form.isEnabledInHierarchy())
+						{
+							isMultiPart = (form.multiPart != 0);
+						}
 					}
 					else if (component instanceof FormComponent<?>)
 					{
-						FormComponent<?> form = (FormComponent<?>)component;
-						isMultiPart = form.isMultiPart();
+						FormComponent<?> fc = (FormComponent<?>)component;
+						if (fc.isVisibleInHierarchy() && fc.isEnabledInHierarchy())
+						{
+							isMultiPart = fc.isMultiPart();
+						}
 					}
-					if (isMultiPart == true)
+
+					if (isMultiPart)
 					{
 						visit.stop(true);
 					}
 				}
 
 			});
-		return Boolean.TRUE.equals(anyEmbeddedMultipart);
+
+		boolean mp = Boolean.TRUE.equals(anyEmbeddedMultipart);
+
+		if (mp)
+		{
+			multiPart |= MULTIPART_HINT;
+		}
+		return mp;
 	}
 
 	/**
@@ -1666,29 +1680,13 @@ public class Form<T> extends WebMarkupCo
 	{
 	}
 
-	/**
-	 * @see org.apache.wicket.Component#onRender()
-	 */
 	@Override
-	protected void onRender()
+	protected void onBeforeRender()
 	{
 		// clear multipart hint, it will be set if necessary by the visitor
 		this.multiPart &= ~MULTIPART_HINT;
 
-		// Force multi-part on if any child form component is multi-part
-		visitFormComponents(new FormComponent.AbstractVisitor<Void>()
-		{
-			@Override
-			public void onFormComponent(FormComponent<?> formComponent, IVisit<Void> visit)
-			{
-				if (formComponent.isVisible() && formComponent.isMultiPart())
-				{
-					multiPart |= MULTIPART_HINT;
-				}
-			}
-		});
-
-		super.onRender();
+		super.onBeforeRender();
 	}
 
 	/**