I assumed that was a typo, or the error message would be different, but it's worth checking: is the form referencing the action you think it is?

L.

Martin Gainty wrote:
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/



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to