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 2008/09/06 20:24:40 UTC

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

Author: ivaynberg
Date: Sat Sep  6 11:24:40 2008
New Revision: 692704

URL: http://svn.apache.org/viewvc?rev=692704&view=rev
Log:
WICKET:1820 multipart support for embedded forms

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=692704&r1=692703&r2=692704&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 Sat Sep  6 11:24:40 2008
@@ -1454,6 +1454,36 @@
 		return new CookieValuePersister();
 	}
 
+	private boolean isMultiPart()
+	{
+		if (multiPart)
+		{
+			return true;
+		}
+		else
+		{
+			final boolean[] anyEmbeddedMultipart = new boolean[] { false };
+			visitChildren(Form.class, new IVisitor<Form<?>>()
+			{
+
+				public Object component(Form<?> form)
+				{
+					if (form.multiPart)
+					{
+						anyEmbeddedMultipart[0] = true;
+						return STOP_TRAVERSAL;
+					}
+					else
+					{
+						return CONTINUE_TRAVERSAL;
+					}
+				}
+
+			});
+			return anyEmbeddedMultipart[0];
+		}
+	}
+
 	/**
 	 * Handles multi-part processing of the submitted data.
 	 * 
@@ -1465,7 +1495,7 @@
 	 */
 	protected boolean handleMultiPart()
 	{
-		if (multiPart && !((WebRequest)getRequest()).isAjax())
+		if (isMultiPart() && !((WebRequest)getRequest()).isAjax())
 		{
 			// Change the request to a multipart web request so parameters are
 			// parsed out correctly
@@ -1633,7 +1663,7 @@
 				tag.put("action", Strings.escapeMarkup(url));
 			}
 
-			if (multiPart)
+			if (isMultiPart())
 			{
 				tag.put("enctype", "multipart/form-data");
 			}