[jboss-user] [JBoss Seam] - Re: Fileupload

mvinayam do-not-reply at jboss.com
Wed Dec 13 10:36:35 EST 2006


"robinemig" wrote : Any chance this can be added to one of the demos? I'm still have problems getting it to work correctly.

hi robinemig,

I am facing the same prbolem of "javax.faces.el.EvaluationException: Cannot set value for expression '#{resultRow.uploadedFile}' to a new value of type org.apache.myfaces.custom.
fileupload.UploadedFileDefaultFileImpl" . I have a datatable within which I have the inputFileUpload & the value is binded with the DTO object. Here is my code. Any help is greatly Appreciated. Need this to be done asap.

 
  | JSF
  | 
  | <%@ taglib uri = "http://java.sun.com/jsf/html" prefix="h"%>
  | <%@ taglib uri = "http://java.sun.com/jsf/core" prefix="f"%>
  | <%@ taglib uri = "http://myfaces.apache.org/tomahawk" prefix = "t"%>
  | 
  | <f:view>
  | 	<f:verbatim>
  | 		<html>
  | 	    <head>
  | 	          <title>Mailing Upload</title>
  | 	          <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/styleSheet/PzStyles.css">
  | 		      <script type="text/javascript" src="<%=request.getContextPath()%>/script/PzUtil.js"></script>
  |               <script type="text/javascript">
  |               	function trim(field){
  |               		field.value = Trim(field.value).toUpperCase();
  |               	}       	
  |         		
  |         		function validateAndSetCounter(){
  |         			var retValue = true;
  | 					var elements = document.getElementsByTagName("input");
  | 					for(i=0;i<elements.length;i++){
  | 						if(elements.type=="file" && elements.id.indexOf("pdfFile")>=0 && elements.value.length<=0){
  | 							alert("Select a PDF file to Print");
  | 							elements.focus();
  | 							retValue = false;
  | 							break;
  | 						}
  | 						else if(elements.type=="file" && elements.id.indexOf("pdfFile")>=0 && elements.value.length>0 && elements.value.indexOf(".pdf")<0){
  | 							alert("Invalid PDF file");
  | 							retValue = false;
  | 							break;
  | 						}			
  | 						else if(elements.id.indexOf("rowCount")>=0){
  | 							document.getElementById("mailingUpload:pdfCounter").value = elements.value;
  | 						}
  | 					}			
  | 					return retValue;
  | 				}
  |               </script>
  | 	    </head>
  | 	    <body>
  | 	</f:verbatim>
  | 	
  | 	<h:form id="mailingUpload" enctype="multipart/form-data">
  |      	<h:panelGrid align="center" width="100%" columnClasses="c6Middle">     	
  | 			<h:outputText styleClass="c7" value="Mailing Interface"/>			
  | 		</h:panelGrid>
  | 		<f:verbatim>			
  | 		    <fieldset class="c19" align="center">
  | 	        <legend style="c6">Mailing Upload</legend>	        			        	
  |      	</f:verbatim>
  |      	<h:messages layout="table" globalOnly="true" styleClass="c3r" showSummary="false" showDetail="true"/>
  |      	<h:panelGrid border="0" align="center" columns="2" width="100%" columnClasses="c6rt25, c6lt25">     		     	
  |      		<h:outputText styleClass="c4r" value="* "/> 
  |      		<h:outputText value="Mandatory Fields"/>
  | 			
  | 			<h:outputText styleClass="c4r" value="** "/> 
  |      		<h:outputText value="Mandatory when Address Field is Selected"/>
  | 
  | 			<h:panelGroup>
  | 				<h:outputText styleClass="c4r" value="* "/> 
  | 		     	<h:outputText value="Description: "/>
  | 			</h:panelGroup>
  | 			<h:panelGroup>		
  | 				<h:inputText id="desc" styleClass="c12" value="#{MailingBacking.mailingDesc}" onchange="trim(this)" required="true">
  | 					<f:attribute name="errMsg" value="Description"/>
  | 				</h:inputText>
  | 				<h:message for="desc" styleClass="c3r"/>
  | 			</h:panelGroup>								
  | 			
  | 			<h:panelGroup>
  | 				<h:outputText styleClass="c4r" value="* "/> 
  | 		     	<h:outputText value="Total Quantity: "/>
  | 			</h:panelGroup>
  | 			<h:panelGroup>		
  | 				<h:inputText id="totQty" styleClass="c12" value="#{MailingBacking.totalQty}" onchange="trim(this)" required="true">
  | 					<f:attribute name="errMsg" value="Total Quantity"/>
  | 				</h:inputText>
  | 				<h:message for="totQty" styleClass="c3r"/>
  | 			</h:panelGroup>	
  | 			
  | 			<h:panelGroup>
  | 				<h:outputText styleClass="c4r" value="* "/> 
  | 		     	<h:outputText value="Item Type: "/>
  | 			</h:panelGroup>		
  | 			
  | 			<h:panelGroup>	
  | 				<h:selectOneMenu id="itemType" value="#{MailingBacking.itemTypeId}" styleClass="c12" required="true">
  |   	              <f:selectItem itemValue="" itemLabel="--Select--"/>
  |   	              <f:selectItems value="#{MailingBacking.itemTypeList}"/>
  |   	              <f:attribute name="errMsg" value="Item Type"/>
  |                 </h:selectOneMenu>           
  |                 <h:message for="itemType" styleClass="c3r"/>
  | 			</h:panelGroup>						
  | 						
  | 			<h:panelGroup>
  | 		     	<h:outputText value="Address File: "/>
  | 			</h:panelGroup>
  | 			<h:panelGroup>		
  | 				<t:inputFileUpload id="addressFile" styleClass="c12" value="#{MailingBacking.uploadedFile}" onchange="trim(this)" storage="file">
  | 					<f:attribute name="errMsg" value="Address File"/>
  | 				</t:inputFileUpload>
  | 				<h:message for="addressFile" styleClass="c3r"/>
  | 			</h:panelGroup>						
  | 			
  | 			<h:panelGroup>
  | 				<h:outputText styleClass="c4r" value="** "/> 
  | 		     	<h:outputText value="Group Number: "/>
  | 			</h:panelGroup>
  | 			<h:panelGroup>		
  | 				<h:inputText id="groupRef" styleClass="c12" value="#{MailingBacking.groupRef}" onchange="trim(this)">
  | 					<f:attribute name="errMsg" value="Group Number"/>
  | 				</h:inputText>
  | 				<h:message for="groupRef" styleClass="c3r"/>
  | 			</h:panelGroup>	
  | 		</h:panelGrid>		
  | 		<h:panelGrid align="center" columnClasses="c6Middle" width="100%">
  | 			<t:dataTable id="pdfFiles" value="#{MailingBacking.pdfFileList}" renderedIfEmpty="false"
  | 			headerClass="tableHeader" styleClass="tableStyle" align="center" var="resultRow" rowCountVar="rowCount">
  | 				<t:column>
  | 					<f:facet name="header">
  | 	     				<h:outputText styleClass="c3" value=" PDF Print File "/>
  | 	     			</f:facet>
  | 	     			<t:inputFileUpload storage="file" id="pdfFile" styleClass="c12" value="#{resultRow.uploadedFile}" onchange="trim(this)" required="true"/>
  | 	     			<h:inputHidden id="rowCount" value="#{rowCount}"/>
  | 				</t:column>				
  | 			</t:dataTable>
  | 			<h:inputHidden id="pdfCounter" value="#{MailingBacking.pdfCounter}"/>
  | 			<h:commandButton id="addPdf" value="Add PDF Supplement" styleClass="c15" onclick="return validateAndSetCounter();" action="#{MailingBacking.addNewPdf}"/>
  | 		</h:panelGrid>
  | 	</h:form>	
  | 	<f:verbatim>
  | 		</body>
  | 		</html>
  | 	</f:verbatim>
  | </f:view>
  | 
  | BackingBean
  | 
  | package com.cci.pz.web.orderMgmt.mailing;
  | 
  | import java.sql.Timestamp;
  | import java.util.ArrayList;
  | import java.util.Enumeration;
  | 
  | import javax.faces.context.FacesContext;
  | import javax.faces.model.SelectItem;
  | import javax.naming.Context;
  | import javax.naming.InitialContext;
  | import javax.servlet.http.HttpServletRequest;
  | 
  | import org.apache.myfaces.custom.fileupload.UploadedFile;
  | 
  | import com.cci.pz.data.orderMgmt.mailing.PzMailingLineDTO;
  | import com.cci.pz.entity.catalogMgmt.PzItemTypes;
  | import com.cci.pz.session.catalogMgmt.PzItemTypeFacade;
  | import com.cci.pz.web.login.PzUserObject;
  | 
  | public class MailingBackingBean{
  | 	
  | 	private String addrFileNameIn;
  | 	private Timestamp dueDate;
  |     private String groupRef;
  |     private String mailingDesc;
  |     private String fileNameIn;
  |     private Long itemTypeId;
  |     private Long totalQty;
  |     private Long lineQty;
  |     private Long pdfCounter = 0L;
  |     private ArrayList<PzMailingLineDTO> pdfFileList;
  |     private PzUserObject userSessionObj;    
  |     private UploadedFile uploadedFile;
  |     
  |     PzItemTypeFacade itemTypeFacade; 
  |     
  |     HttpServletRequest request = null;
  |     
  |     public MailingBackingBean()throws Exception{
  |     	Context ctx = new InitialContext();
  |     	itemTypeFacade = (PzItemTypeFacade)ctx.lookup(PzItemTypeFacade.class.getName());
  |     	request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
  |     	Enumeration ee = request.getParameterNames();
  | 		while(ee.hasMoreElements()){
  | 			String name = (String)ee.nextElement();
  | 			if(name.indexOf("rowCount")>=0){
  | 				String value = request.getParameter(name);
  | 				System.out.println(name+":"+value);
  | 				if(value!=null && value.length()>0){
  | 					this.pdfCounter = Long.parseLong(value);					
  | 				}
  | 			}
  | 		}	
  | 		
  |     }
  |     
  | 	public String getAddrFileNameIn() {
  | 		return addrFileNameIn;
  | 	}
  | 	
  | 	public void setAddrFileNameIn(String addrFileNameIn) {
  | 		this.addrFileNameIn = addrFileNameIn;
  | 	}
  | 	
  | 	
  | 	public Timestamp getDueDate() {
  | 		return dueDate;
  | 	}
  | 	
  | 	public void setDueDate(Timestamp dueDate) {
  | 		this.dueDate = dueDate;
  | 	}
  | 	
  | 	public String getFileNameIn() {
  | 		return fileNameIn;
  | 	}
  | 	
  | 	public void setFileNameIn(String fileNameIn) {
  | 		this.fileNameIn = fileNameIn;
  | 	}
  | 	
  | 	public String getGroupRef() {
  | 		return groupRef;
  | 	}
  | 	
  | 	public void setGroupRef(String groupRef) {
  | 		this.groupRef = groupRef;
  | 	}
  | 	
  | 	public Long getItemTypeId() {
  | 		return itemTypeId;
  | 	}
  | 	
  | 	public void setItemTypeId(Long itemTypeId) {
  | 		this.itemTypeId = itemTypeId;
  | 	}
  | 	
  | 	public Long getLineQty() {
  | 		return lineQty;
  | 	}
  | 	
  | 	public void setLineQty(Long lineQty) {
  | 		this.lineQty = lineQty;
  | 	}
  | 	
  | 	public String getMailingDesc() {
  | 		return mailingDesc;
  | 	}
  | 	
  | 	public void setMailingDesc(String mailingDesc) {
  | 		this.mailingDesc = mailingDesc;
  | 	}
  | 		
  | 	public SelectItem[] getItemTypeList(){
  | 		SelectItem[] selectItems = new SelectItem[]{};		
  | 		ArrayList<PzItemTypes> itemTypeList = itemTypeFacade.getItemTypes(this.getUserSessionObj().getClientCode(),"A");
  | 		if(itemTypeList!=null && itemTypeList.size()>0){		
  | 			selectItems = new SelectItem[itemTypeList.size()];
  | 			for(int i=0;i<itemTypeList.size();i++){
  | 				selectItems =  new SelectItem((itemTypeList.get(i)).getItemTypeId(),(itemTypeList.get(i)).getItemTypeDesc());
  | 			}			
  | 		}				
  | 		return selectItems;		
  | 	}
  | 
  | 	public PzUserObject getUserSessionObj() {
  | 		return userSessionObj;
  | 	}
  | 
  | 	public void setUserSessionObj(PzUserObject userSessionObj) {
  | 		this.userSessionObj = userSessionObj;
  | 	}
  | 
  | 	public Long getTotalQty() {
  | 		return totalQty;
  | 	}
  | 
  | 	public void setTotalQty(Long totalQty) {
  | 		this.totalQty = totalQty;
  | 	}
  | 
  | 	public ArrayList<PzMailingLineDTO> getPdfFileList() {
  | 		System.out.println("inside getPdfFileList pdfFileCounter : "+this.pdfCounter);
  | 		System.out.println("inside getPdfFileList pdfFileList : "+this.pdfFileList);
  | 		if(this.pdfCounter!=null && this.pdfCounter.longValue()==0){
  | 			this.pdfFileList = new ArrayList<PzMailingLineDTO>();			
  | 			this.pdfFileList.add(new PzMailingLineDTO());				
  | 		}
  | 		else if(this.pdfFileList==null){
  | 			this.pdfFileList = new ArrayList<PzMailingLineDTO>();			
  | 		}
  | 		if(this.pdfFileList.size()<this.pdfCounter.intValue()){
  | 			int i =  this.pdfFileList.size();
  | 			for(;i<this.pdfCounter.intValue();i++){
  | 				this.pdfFileList.add(new PzMailingLineDTO());
  | 			}
  | 		}
  | 		System.out.println("PdfList Size frm getPdfFileList: "+this.pdfFileList.size());		
  | 		return pdfFileList;
  | 	}	
  | 	
  | 	public void addNewPdf(){
  | 		System.out.println("inside addNewPdf");
  | 		if(this.getPdfFileList()!=null){
  | 			System.out.println("PdfList Size: "+this.pdfFileList.size());
  | 			for(PzMailingLineDTO lineDTO:this.pdfFileList){
  | 				System.out.println(lineDTO.getUploadedFile().getName()+":"+lineDTO.getUploadedFile().getContentType());
  | 			}
  | 			this.pdfFileList.add(new PzMailingLineDTO());			
  | 		}
  | 	}
  | 
  | 	public void setPdfFileList(ArrayList<PzMailingLineDTO> pdfFileList) {
  | 		this.pdfFileList = pdfFileList;
  | 	}
  | 
  | 	public Long getPdfCounter() {
  | 		return pdfCounter;
  | 	}
  | 
  | 	public void setPdfCounter(Long pdfCounter) {
  | 		this.pdfCounter = pdfCounter;
  | 	}
  | 	
  | 	public void upload(){
  | 		UploadedFile uploadedFile = this.getUploadedFile();
  |         String uploadedFileName = uploadedFile.getName();
  |         System.out.println("File Name : "+uploadedFileName);
  | 	}
  | 
  | 	public UploadedFile getUploadedFile() {
  | 		return uploadedFile;
  | 	}
  | 
  | 	public void setUploadedFile(UploadedFile uploadedFile) {
  | 		this.uploadedFile = uploadedFile;
  | 	}
  | }
  | 
  | DTO
  | package com.cci.pz.data.orderMgmt.mailing;
  | 
  | 
  | import org.apache.myfaces.custom.fileupload.UploadedFile;
  | 
  | import com.cci.pz.data.util.GlobalDbDataHolder;
  | 
  | public class PzMailingLineDTO implements GlobalDbDataHolder {
  |     private String fileNameIn;
  | 
  |     private String fileNameProc;
  | 
  |     private String itemNum;
  | 
  |     private Long itemTypeId;
  | 
  |     private Long lineNumber;
  | 
  |     private Long lineQty;
  | 
  |     private Long mailingLineId;
  | 
  |     private Long pageCount;
  | 
  |     private Long mailingId;
  |     
  |     private UploadedFile uploadedFile;    
  | 
  |     public PzMailingLineDTO() {
  |     }
  | 
  |     public String getFileNameIn() {
  |         return fileNameIn;
  |     }
  | 
  |     public void setFileNameIn(String fileNameIn) {
  |         this.fileNameIn = fileNameIn;
  |     }
  | 
  |     public String getFileNameProc() {
  |         return fileNameProc;
  |     }
  | 
  |     public void setFileNameProc(String fileNameProc) {
  |         this.fileNameProc = fileNameProc;
  |     }
  | 
  |     public String getItemNum() {
  |         return itemNum;
  |     }
  | 
  |     public void setItemNum(String itemNum) {
  |         this.itemNum = itemNum;
  |     }
  | 
  |     public Long getItemTypeId() {
  |         return itemTypeId;
  |     }
  | 
  |     public void setItemTypeId(Long itemTypeId) {
  |         this.itemTypeId = itemTypeId;
  |     }
  | 
  |     public Long getLineNumber() {
  |         return lineNumber;
  |     }
  | 
  |     public void setLineNumber(Long lineNumber) {
  |         this.lineNumber = lineNumber;
  |     }
  | 
  |     public Long getLineQty() {
  |         return lineQty;
  |     }
  | 
  |     public void setLineQty(Long lineQty) {
  |         this.lineQty = lineQty;
  |     }
  | 
  |     public Long getMailingLineId() {
  |         return mailingLineId;
  |     }
  | 
  |     public void setMailingLineId(Long mailingLineId) {
  |         this.mailingLineId = mailingLineId;
  |     }
  | 
  |     public Long getPageCount() {
  |         return pageCount;
  |     }
  | 
  |     public void setPageCount(Long pageCount) {
  |         this.pageCount = pageCount;
  |     }
  | 
  |     public Long getMailingId() {
  |         return mailingId;
  |     }
  | 
  |     public void setMailingId(Long mailingId) {
  |         this.mailingId = mailingId;
  |     }
  |     
  |     public UploadedFile getUploadedFile() {
  | 		return uploadedFile;
  | 	}
  | 
  | 	public void setUploadedFile(UploadedFile pdfPrintFile) {
  | 		this.uploadedFile = pdfPrintFile;
  | 	}
  | 
  | }
  | 
  | web.xml
  | <?xml version="1.0" ?>
  | <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  |          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  |          version="2.4">
  |     <distributable />
  | 
  |     <listener>
  |         <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  |     </listener>
  | 
  |     <servlet>
  |         <servlet-name>Faces Servlet</servlet-name>
  |         <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  |         <load-on-startup>1</load-on-startup>
  |     </servlet>
  |     
  |     <servlet-mapping>
  |         <servlet-name>Faces Servlet</servlet-name>
  |         <url-pattern>*.faces</url-pattern>
  |     </servlet-mapping>                    
  | 	    
  | 	<servlet>
  |         <servlet-name>Login Servlet</servlet-name>
  |         <servlet-class>com.cci.pz.web.login.LoginServlet</servlet-class>
  |         <load-on-startup>1</load-on-startup>
  |     </servlet>
  |     
  |     <servlet-mapping>
  |         <servlet-name>Login Servlet</servlet-name>
  |         <url-pattern>/LoginServlet</url-pattern>
  |     </servlet-mapping> 
  | 
  | 	<servlet>
  |         <servlet-name>PlaceOrder Servlet</servlet-name>
  |         <servlet-class>com.cci.pz.web.PlaceOrder</servlet-class>
  |         <load-on-startup>1</load-on-startup>
  |     </servlet>
  |     
  |     <servlet-mapping>
  |         <servlet-name>PlaceOrder Servlet</servlet-name>
  |         <url-pattern>/PlaceOrder</url-pattern>
  |     </servlet-mapping> 
  | 
  | 	<servlet>
  |     	<servlet-name>Komatsu Servlet</servlet-name>
  |         <servlet-class>com.cci.pz.web.xmlProcess.Komatsu</servlet-class>
  |         <load-on-startup>1</load-on-startup>
  |     </servlet>
  |     
  |     <servlet-mapping>
  |         <servlet-name>Komatsu Servlet</servlet-name>
  |         <url-pattern>/Komatsu</url-pattern>
  |     </servlet-mapping> 
  | 
  | 	<filter>
  | 		<filter-name>MyFacesExtensionsFilter</filter-name>
  | 		<filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
  | 	    <init-param>
  | 	        <param-name>maxFileSize</param-name>
  | 	        <param-value>20m</param-value>
  | 	    </init-param>
  | 	</filter>
  | 	
  | 	<!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages  -->
  | 	<filter-mapping>
  | 	    <filter-name>MyFacesExtensionsFilter</filter-name>
  | 	    <!-- servlet-name must match the name of your javax.faces.webapp.FacesServlet entry -->
  | 	    <servlet-name>Faces Servlet</servlet-name>
  | 	</filter-mapping>
  | 	
  | 	<!-- extension mapping for serving page-independent resources (javascript, stylesheets, images, etc.)  -->
  | 	<filter-mapping>
  | 	    <filter-name>MyFacesExtensionsFilter</filter-name>
  | 	    <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
  | 	</filter-mapping>    
  | 	
  | 	<!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages  -->
  | 	<filter-mapping>
  | 	    <filter-name>MyFacesExtensionsFilter</filter-name>
  | 	    <url-pattern>*.jsf</url-pattern>
  | 	</filter-mapping>
  | 	
  | 	<filter>
  |         <filter-name>extensionsFilter</filter-name>
  |         <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
  |         <init-param>
  |             <param-name>uploadMaxFileSize</param-name>
  |             <param-value>100m</param-value>
  |         </init-param>
  |         <init-param>
  |             <param-name>uploadThresholdSize</param-name>
  |             <param-value>100k</param-value>
  |         </init-param>
  | 
  |         <init-param>
  |             <param-name>uploadRepositoryPath</param-name>
  |             <param-value>C:\jboss-4.0.3SP1\server\default\deploy\jbossweb-tomcat55.sar\ROOT.war\mailUpload\</param-value>
  |         </init-param>
  |     </filter>
  | 
  |     <filter-mapping>
  |         <filter-name>extensionsFilter</filter-name>
  |         <url-pattern>*.jsf</url-pattern>
  |     </filter-mapping>	
  | 	
  | 	<context-param>
  | 		<param-name>pz3FilePath</param-name>
  | 		<param-value>c:\jboss-4.0.3SP1\server\default\</param-value>
  | 	</context-param>	
  | 	
  | 	<context-param>
  | 		<param-name>pz3ViewableLocation</param-name>
  | 		<param-value>C:\jboss-4.0.3SP1\server\default\deploy\jbossweb-tomcat55.sar\ROOT.war\pz3Viewable\</param-value>
  | 	</context-param>
  | 	
  | 	<context-param>
  | 		<param-name>pz3Viewables</param-name>
  | 		<param-value>http://hq00416:8080/pz3Viewable/</param-value>
  | 	</context-param>	
  | </web-app>
  | 
  | Thanks & Regds
  | Viji

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3993438#3993438

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3993438



More information about the jboss-user mailing list