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 2009/09/16 06:29:42 UTC

svn commit: r815602 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js

Author: ivaynberg
Date: Wed Sep 16 04:29:41 2009
New Revision: 815602

URL: http://svn.apache.org/viewvc?rev=815602&view=rev
Log:
WICKET-2463 Ajax miltipart form submitting ignores setDefaultFormProcessing(false)
Issue: WICKET-2463

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js?rev=815602&r1=815601&r2=815602&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js Wed Sep 16 04:29:41 2009
@@ -1056,7 +1056,7 @@
 	// Submits a form using ajax.
 	// This method serializes a form and sends it as POST body.
 	submitForm: function(form, submitButton) {
-	    if (this.handleMultipart(form)) {
+	    if (this.handleMultipart(form, submitButton)) {
 	    	return true;
 	    }
 	    var body = function() {
@@ -1072,7 +1072,7 @@
 	// If the form contains multipart content this function will post 
 	// the form using an iframe instead of the regular ajax call
 	// and bridge the output - transparently making this work  as if it was an ajax call
-	handleMultipart: function (form) {
+	handleMultipart: function (form, submitButton) {
 		
 	 	if (form.enctype!="multipart/form-data") {
 	 		// not handled, return false
@@ -1105,6 +1105,20 @@
 		// reconfigure the form
 		form.target=iframe.name;
 		form.action=this.request.url;
+		
+		// create submitting button element
+		if (submitButton!=null) {
+			try {
+	    		var btn = document.createElement("<input type='hidden' name='"+submitButton+"' id='"+iframe.id+"-btn' value='1'/>");
+			} catch (ex) {
+			    var btn = document.createElement("input");
+			    btn.type="hidden";
+				btn.name=submitButton;
+				btn.id=iframe.id+"-btn";
+				btn.value="1";
+			}
+		}
+		form.appendChild(btn);
 
 		//submit the form into the iframe, response will be handled by the onload callback
 		form.submit();
@@ -1136,8 +1150,8 @@
 		else  
 			iframe.removeEventListener("load", this.handleMultipartComplete, false);
 		
-		// remove the iframe
-		setTimeout(function() { iframe.parentNode.removeChild(iframe); }, 250);
+		// remove the iframe and button elements
+		setTimeout(function() { var e=document.getElementById(iframe.id+"-btn"); if (e!=null) { e.parentNode.removeChild(e); } iframe.parentNode.removeChild(iframe); }, 250);
 	},
 	
 	// Processes the response