and if you change the action name 
<action name="saveitem" class="com.sandplains.view.action.SaveItem">
to same name references in the action attribute in s:form
<s:form action="saveitem"?
Martin 
______________________________________________ 
Disclaimer and confidentiality note 
Everything in this e-mail and any attachments relates to the official business 
of Sender. This transmission is of a confidential nature and Sender does not 
endorse distribution to any party other than intended recipient. Sender does 
not necessarily endorse content contained within this transmission. 


> Date: Fri, 26 Sep 2008 14:40:36 -0700
> From: [EMAIL PROTECTED]
> Subject: Re: How to validation/workflow with fileUpload?
> To: user@struts.apache.org
> 
> Laurie,
> I added the getters and received the same result for the upload s:file field, 
> 'Invalid field value for field "upload".' The message seems to be coming from 
> the FileUploadInterceptor.
> 
> Earle
> 
> 
> 
> ----- Original Message ----
> From: Laurie Harper <[EMAIL PROTECTED]>
> To: user@struts.apache.org
> Sent: Friday, September 26, 2008 3:53:42 PM
> Subject: Re: How to validation/workflow with fileUpload?
> 
> Glancing through your action code, you have setters but no getters. 
> Without getters, there is no way for Struts' validation code to access 
> the values to validate them, or for the form tags in the JSP to access 
> them. That might be the problem...
> 
> L.
> 
> Earle Flynn wrote:
> > How is it possible to use validation/workflow interceptors in combination 
> > with fileUpload interceptor?
> >  
> > For the config below, if I submit an html form that includes the file tag, 
> > struts returns a blank white page instead of the intended success result. 
> > This occurs regardless of whether form is filled out correctly or not. I 
> > would assume struts is looking for an input result since there was a file 
> > upload error, assuming, though?
> >  
> > From log statements the validate() method is executed but the execute() 
> > method is not, despite the form being filled out properly. The File object 
> > is even available in validate() and has the correct info (fileName, 
> > contentType), I can even see the temp file since it’s not delete since 
> > execute() does not run. What is the proper interceptor stack configuration 
> > for using validation, workflow, and fileUpload?
> >  
> > I have tried setting each interceptor manually, in a number of different 
> > stack positions, but it seems like file upload cancels out validation and 
> > workflow.
> >  
> > btw, if the same form is submitted without a file then the action behaves 
> > as expected.
> >  
> > The blank page problem occurs when the FileUploadInterceptor detects a 
> > file. Also, I have tried to use SaveItem-validation.xml instead of manual 
> > validate() with the same results but I also have a specific reason to use 
> > the manual validate().
> >  
> > Any suggestions to get the fileUpload interceptor to return either the 
> > success result or input result instead of the blank page.
> >  -- jars in lib;
> > struts2-core 2.0.11.2
> > commons-fileupload 1.1.1
> > commons-io 1.0
> >  
> > -- struts-xml
> >  
> > <struts>
> >             <!-- Configuration for the default package. -->
> >             <package name="default" extends="struts-default">
> >            
> >         <action name="tokenPrepare!*" 
> > class="com.sandplains.view.action.SaveItem" method="{1}">
> >             <result name="input">WEB-INF/jsp/post-item.jsp</result>
> >         </action>
> >  
> >         <action name="saveitem" class="com.sandplains.view.action.SaveItem">
> >                 <interceptor-ref name="token"/>
> >             <interceptor-ref name="exception"/>
> >             <interceptor-ref name="alias"/>
> >             <interceptor-ref name="servletConfig"/>
> >             <interceptor-ref name="prepare"/>
> >             <interceptor-ref name="i18n"/>
> >             <interceptor-ref name="chain"/>
> >             <interceptor-ref name="debugging"/>
> >             <interceptor-ref name="profiling"/>
> >             <interceptor-ref name="scopedModelDriven"/>
> >             <interceptor-ref name="modelDriven"/>
> >             <interceptor-ref name="fileUpload"/>
> >             <interceptor-ref name="checkbox"/>
> >             <interceptor-ref name="staticParams"/>
> >             <interceptor-ref name="params">
> >                         <param name="excludeParams">dojo\..*</param>
> >             </interceptor-ref>
> >             <interceptor-ref name="conversionError"/>
> >             <interceptor-ref name="validation">
> >                 <param 
> > name="excludeMethods">input,back,cancel,browse</param>
> >             </interceptor-ref>
> >             <interceptor-ref name="workflow">
> >                 <param 
> > name="excludeMethods">input,back,cancel,browse</param>
> >             </interceptor-ref>
> >  
> >             <result name="input">WEB-INF/jsp/post-item.jsp</result>
> >             <result 
> > name="invalid.token">/error/dbl-click-post-item.jsp</result>
> >             <result>WEB-INF/jsp/results-save-item.jsp</result>
> >             <result name="failure">/error/error.jsp</result>
> >         </action>
> >  
> >             </package>
> > </struts>
> >  
> > -- struts.properties
> >  
> > struts.multipart.parser=jakarta
> > struts.multipart.saveDir=c:/tmp
> > struts.multipart.maxSize=1000000
> >  
> > -- jsp
> > <s:form name="savefrm" action="saveitem.does" method="post" 
> > enctype="multipart/form-data">
> >             <s:token/>
> >             <s:textarea label="Desc" name="description" cols="35" rows="4" 
> > required="true"/>
> >             <s:file name="upload" label="Picture"/>
> >             <s:submit name="submit1" align="left"/>
> > </s:form>
> >  
> > action
> >  
> > public class SaveItem extends ActionSupport {
> >             private static final long serialVersionUID = 1L;
> >             static Logger log = Logger.getLogger(SaveItem.class);
> >  
> >             private String description;
> >  
> >             private File file;
> >             private String contentType;
> >             private String filename;
> >  
> >             public String execute() throws Exception {
> >  
> >                         if (AppConstants.DEBUG) {
> >                                    log.info("description: " + description);
> >                                     log.info("contentType: " + contentType);
> >                                     log.info("filename: " + filename);
> >                         }
> >                        
> >                         // do stuff...
> >  
> >  
> >                         return SUCCESS;
> >             }
> >  
> >             public void validate() {
> >                         log.info("filename: " + filename);
> >                         log.info("contentType: " + contentType);
> >                        
> >                         //
> >                         // Validate fields.
> >                         //
> >                         if (description != null && 
> > description.trim().length() > 0) {
> >                                     if (description.length() > 5000) {
> >                                                 addFieldError("description",
> >                                                                         
> > "Description must not be more than 5000 characters, including whitespace.");
> >                                     }
> >                         } else {
> >                                     addFieldError("description", 
> > "Description is a required field.");
> >                         }
> >  
> >             }
> >  
> >             public void setUpload(File file) {
> >                         this.file = file;
> >             }
> >  
> >             public void setUploadContentType(String contentType) {
> >                         this.contentType = contentType;
> >             }
> >  
> >             public void setUploadFileName(String filename) {
> >                         this.filename = filename;
> >             }
> > }
> > 
> > 
> >      
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
>       

_________________________________________________________________
Stay up to date on your PC, the Web, and your mobile phone with Windows Live.
http://clk.atdmt.com/MRT/go/msnnkwxp1020093185mrt/direct/01/

Reply via email to