[richfaces-svn-commits] JBoss Rich Faces SVN: r6340 - in trunk/sandbox/ui/fileUpload/src/main: resources/org/richfaces/renderkit/html/js and 1 other directory.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Feb 26 07:18:28 EST 2008


Author: andrei_exadel
Date: 2008-02-26 07:18:28 -0500 (Tue, 26 Feb 2008)
New Revision: 6340

Modified:
   trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java
   trunk/sandbox/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js
Log:
update view state after file uploaded functionality

Modified: trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java
===================================================================
--- trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java	2008-02-26 11:57:05 UTC (rev 6339)
+++ trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java	2008-02-26 12:18:28 UTC (rev 6340)
@@ -14,8 +14,12 @@
 import javax.faces.context.ResponseWriter;
 import javax.faces.render.RenderKit;
 import javax.faces.render.RenderKitFactory;
+import javax.faces.render.ResponseStateManager;
 import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpSession;
 
+import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.context.AjaxContextImpl;
 import org.ajax4jsf.event.AjaxEvent;
 import org.ajax4jsf.javascript.JSFunction;
 import org.ajax4jsf.javascript.JSFunctionDefinition;
@@ -100,9 +104,10 @@
 	    UIFileUpload fileUpload) {
 	storeData(context, fileUpload, file);	
 	try {
-	    context.responseComplete();
+	    AjaxContext ajaxContext = AjaxContextImpl.getCurrentInstance(context);
+	    ajaxContext.setAjaxRequest(true);
 	} catch (Exception e) {
-	    e.getMessage();
+	   e.getMessage();
 	}
     }
 

Modified: trunk/sandbox/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js
===================================================================
--- trunk/sandbox/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js	2008-02-26 11:57:05 UTC (rev 6339)
+++ trunk/sandbox/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js	2008-02-26 12:18:28 UTC (rev 6340)
@@ -273,9 +273,10 @@
 
 LoadWatcher = Class.create();
 Object.extend(LoadWatcher.prototype, {
-	initialize: function(iframe, callback) {
+	initialize: function(iframe, callback, viewStateUpdater) {
 		this.iframe = iframe;
 		this.callback = callback;
+		this.viewStateUpdater = viewStateUpdater;
 	
 		this.loadObserver = function() {
 			if (!this.stopped) {
@@ -324,7 +325,10 @@
 		} else if (restr) {
 			this.callback(FileUploadEntry.UPLOAD_SIZE_ERROR);
 		} else {
-			//TODO handle server internal errors, etc.
+			var state = iframeDocument.getElementById('javax.faces.ViewState');
+			if (state) {
+				this.viewStateUpdater(state.value);
+			}
 			this.callback(FileUploadEntry.UPLOAD_SUCCESS);
 		}
 	},
@@ -421,7 +425,7 @@
 	}
 		this.iframe = null;
 	},
-
+	
 	initEvents : function() {
 		for (var e in this.events) {
 			if (e && this.events[e]) {
@@ -711,6 +715,15 @@
 		this.deleteFrame();
 	},
 	
+	updateViewState: function (state) {
+		if (!state) return;
+		var form = this.getForm();
+		var viewStateE  = form['javax.faces.ViewState'];
+		if (viewStateE) {
+			viewStateE.value = state;
+		}
+	},
+	
 	_updateEntriesState: function() {
 		var l = this.entries.length;
 		
@@ -793,11 +806,16 @@
 		this.processButtons();
 	},
 	
-	submitForm: function(entry) {
+	getForm: function () {
 		var parentForm = this.element;
 		while (parentForm.tagName && parentForm.tagName.toLowerCase() != 'form') {
 			parentForm = parentForm.parentNode;
 		}
+		return parentForm;
+	},
+	
+	submitForm: function(entry) {
+		var parentForm = this.getForm();
 		
 		if (!parentForm) {
 			throw "No parent form found!";
@@ -841,7 +859,10 @@
 				new LoadWatcher(iframe, function(newState) {
 					this.finishProgressBar();
 					this.setState(newState);
-				}.bind(entry));
+				}.bind(entry),
+				function (state) {
+					this.updateViewState(state);
+				}.bind(this));
 				
 				parentForm.submit();
 			}




More information about the richfaces-svn-commits mailing list