primefaces 2.2M1 RC1 p:fileupload patch

UI Components for JSF
Post Reply
heyoulin
Posts: 35
Joined: 29 Mar 2010, 19:49

15 Sep 2010, 22:15

This patch resolve flash10 session problem and can submit form data.

### Eclipse Workspace Patch 1.0
#P primefaces
Index: src/main/java/org/primefaces/component/fileupload/FileUploadRenderer.java
===================================================================
--- src/main/java/org/primefaces/component/fileupload/FileUploadRenderer.java (revision 3472)
+++ src/main/java/org/primefaces/component/fileupload/FileUploadRenderer.java (working copy)
@@ -21,7 +21,9 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import javax.faces.event.PhaseId;
import javax.servlet.ServletRequestWrapper;
+import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;
import org.primefaces.event.FileUploadEvent;
@@ -43,7 +45,9 @@

if(file != null) {
UploadedFile uploadedFile = new DefaultUploadedFile(file);
- fileUpload.queueEvent(new FileUploadEvent(fileUpload, uploadedFile));
+ FileUploadEvent event=new FileUploadEvent(fileUpload, uploadedFile);
+ event.setPhaseId(PhaseId.INVOKE_APPLICATION);
+ fileUpload.queueEvent(event);
}
}
}
@@ -100,7 +104,9 @@
writer.write(",multi:" + fileUpload.isMultiple());
writer.write(",auto:" + fileUpload.isAuto());
writer.write(",inputFileId:'" + inputFileId + "'");
-
+ String jsessionid=((HttpServletRequest)facesContext.getExternalContext().getRequest()).getRequestedSessionId();
+ if(jsessionid!=null)
+ writer.write(",jsid:'" + jsessionid + "'");
if(fileUpload.getUpdate() != null) writer.write(",update:'" + ComponentUtils.findClientIds(facesContext, fileUpload, fileUpload.getUpdate()) + "'");
if(fileUpload.getImage() != null) writer.write(",buttonImg:'" + getResourceURL(facesContext, fileUpload.getImage()) + "'");
if(fileUpload.getLabel() != null) writer.write(",buttonText:'" + fileUpload.getLabel() + "'");



/////////////////////////////////////////////////////////////


### Eclipse Workspace Patch 1.0
#P primefaces
Index: src/main/resources/META-INF/resources/primefaces/fileupload/fileupload.js
===================================================================
--- src/main/resources/META-INF/resources/primefaces/fileupload/fileupload.js (revision 3472)
+++ src/main/resources/META-INF/resources/primefaces/fileupload/fileupload.js (working copy)
@@ -106,6 +106,13 @@
jQuery(this).bind("uploadifyOpen", settings.onOpen);
}
jQuery(this).bind("uploadifySelect", {'action': settings.onSelect, 'queueID': settings.queueID}, function(event, ID, fileObj) {
+ var newdata=getFormData(jQuery(PrimeFaces.escapeClientId(settings.formId))[0]);
+ var newscriptData = jQuery.extend(settings.scriptData, newdata);
+ var scriptDataString = '';
+ for (var name in newscriptData) {
+ scriptDataString += '&' + name + '=' + escape(newscriptData[name]);
+ }
+ document.getElementById(jQuery(this).attr('id') + 'Uploader').updateSettings("scriptData", scriptDataString.substr(1));
if (event.data.action(event, ID, fileObj) !== false) {
var byteSize = Math.round(fileObj.size / 1024 * 100) * .01;
var suffix = 'KB';
@@ -190,6 +197,38 @@
jQuery("#" + jQuery(this).attr('id') + ID).addClass('uploadifyError');
}
});
+ function getFormData(form) {
+ var params = {};
+ function addParam(name, value) {
+ params[name]=value;
+ }
+
+ var elemArray = form.elements;
+ for (var i = 0; i < elemArray.length; i++) {
+ var element = elemArray;
+ var elemType = element.type.toUpperCase();
+ var elemName = element.name;
+ if (elemName) {
+ if (elemType == "TEXT"
+ || elemType == "TEXTAREA"
+ || elemType == "PASSWORD"
+ || elemType == "HIDDEN")
+ addParam(elemName, element.value);
+ else if (elemType == "CHECKBOX" && element.checked)
+ addParam(elemName, element.value ? element.value : "On");
+ else if (elemType == "RADIO" && element.checked)
+ addParam(elemName, element.value);
+ else if (elemType.indexOf("SELECT") != -1)
+ for (var j = 0; j < element.options.length; j++) {
+ var option = element.options[j];
+ if (option.selected)
+ addParam(elemName,
+ option.value ? option.value : option.text);
+ }
+ }
+ }
+ return params;
+ }
jQuery(this).bind("uploadifyProgress", {'action': settings.onProgress, 'toDisplay': settings.displayData}, function(event, ID, fileObj, data) {
if (event.data.action(event, ID, fileObj, data) !== false) {
jQuery("#" + jQuery(this).attr('id') + ID + "ProgressBar").css('width', data.percentage + '%');
@@ -308,7 +347,7 @@
PrimeFaces.widget.Uploader.prototype.createPostParams = function() {
var params = {};
params[PrimeFaces.PARTIAL_REQUEST_PARAM] = true;
- params[PrimeFaces.PARTIAL_PROCESS_PARAM] = this.id;
+ params[PrimeFaces.PARTIAL_PROCESS_PARAM] = this.cfg.formId+" " + this.id;
params[PrimeFaces.PARTIAL_SOURCE_PARAM] = this.id;
params[PrimeFaces.VIEW_STATE] = PrimeFaces.ajax.AjaxUtils.encodeViewState();

@@ -317,9 +356,15 @@
}

var jsessionid = YAHOO.util.Cookie.get("JSESSIONID");
- if(this.cfg.script.indexOf('jsessionid') == -1) {
+ if(this.cfg.script.indexOf('jsessionid') == -1 && jsessionid!=null) {
this.cfg.script = this.cfg.script + ";jsessionid=" + jsessionid;
}
+ else
+ if(this.cfg.jsid!=null && this.cfg.jsid!='')
+ {
+ this.cfg.script = this.cfg.script + ";jsessionid=" + this.cfg.jsid;
+ YAHOO.util.Cookie.remove("JSESSIONID");
+ }

return params;
}
\ No newline at end of file

### Eclipse Workspace Patch 1.0
#P primefaces
Index: src/main/resources-maven-jsf/ui/fileUpload.xml
===================================================================
--- src/main/resources-maven-jsf/ui/fileUpload.xml (revision 3472)
+++ src/main/resources-maven-jsf/ui/fileUpload.xml (working copy)
@@ -154,6 +154,12 @@
<name>fileupload/fileupload.css</name>
</resource>
<resource>
+ <name>yui/utilities/utilities.js</name>
+ </resource>
+ <resource>
+ <name>yui/container/container-min.js</name>
+ </resource>
+ <resource>
<name>yui/cookie/cookie-min.js</name>
</resource>
<resource>


happy enjoy !

heyoulin
Posts: 35
Joined: 29 Mar 2010, 19:49

15 Sep 2010, 22:18

usage:

Code: Select all

<h:form>
         <h:inputText id="input" value="#{fileUpload.test}"/>
            <p:fileUpload fileUploadListener="#{fileUpload.handleRodFileUpload}" auto="true"
         allowTypes="*.csv;*.xls;" description="(*.csv,*.xls)"/>  
</h:form>

Code: Select all

@ManagedBean(name = "fileUpload")
@RequestScoped
public class FileUpload {
     private String test;
     public String getTest() {
		return test;
	}
	public void setTest(String test) {
		this.test = test;
	}
public void handleRodFileUpload(FileUploadEvent event) throws IOException
     {
    	        String fileName = event.getFile().getFileName();
 		InputStream in = event.getFile().getInputstream();
 		System.out.println(fileName);
 		System.out.println(in.read());
                System.out.println(this.test);
     }

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

17 Sep 2010, 15:25


Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 40 guests