问题描述
我在跑这段代码的时候遇到了java.lang.NullPointerException错误,代码和错误如下。可是如果我把execute函数改为直接返回SUCCESS就没有错误了,希望各位大神能帮帮我,谢谢了~publicclassUploadActionextendsActionSupport{//封装文件标题请求参数的属性privateStringtitle;//封装上传文件域的属性privateFileupload;//封装上传文件类型的属性privateStringuploadContentType;//封装上传文件名的属性privateStringuploadFileName;//直接在struts.xml文件中配置的属性privateStringsavePath;//接受struts.xml文件配置值的方法publicvoidsetSavePath(Stringvalue){this.savePath=value;}//返回上传文件的保存位置publicStringgetSavePath()throwsException{returnServletActionContext.getServletContext().getRealPath(savePath);}//文件标题的setter和getter方法publicvoidsetTitle(Stringtitle){this.title=title;}publicStringgetTitle(){return(this.title);}//上传文件对应文件内容的setter和getter方法publicvoidsetUpload(Fileupload){this.upload=upload;}publicFilegetUpload(){return(this.upload);}//上传文件的文件类型的setter和getter方法publicvoidsetUploadContentType(StringuploadContentType){this.uploadContentType=uploadContentType;}publicStringgetUploadContentType(){return(this.uploadContentType);}//上传文件的文件名的setter和getter方法publicvoidsetUploadFileName(StringuploadFileName){this.uploadFileName=uploadFileName;}publicStringgetUploadFileName(){return(this.uploadFileName);}@OverridepublicStringexecute()throwsException{//以服务器的文件保存地址和原文件名建立上传文件输出流//FileOutputStreamfos=newFileOutputStream(getSavePath()//+"\"+getUploadFileName());//FileInputStreamfis=newFileInputStream(getUpload());//byte[]buffer=newbyte[1024];//intlen=0;//while((len=fis.read(buffer))>0)//{//fos.write(buffer,0,len);//}//fos.close();returnSUCCESS;}}java.io.File.<init>(File.java:262)org.apache.naming.resources.FileDirContext.doGetRealPath(FileDirContext.java:180)org.apache.naming.resources.BaseDirContext.getRealPath(BaseDirContext.java:424)org.crazyit.app.action.UploadAction.getSavePath(UploadAction.java:44)org.crazyit.app.action.UploadAction.execute(UploadAction.java:91)sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)java.lang.reflect.Method.invoke(Method.java:597)com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
解决方案
解决方案二:
没明白你的是什么意思。
解决方案三:
你上传文件的页面呢
解决方案四:
单步调下,看是不是文件没获取到
解决方案五:
引用1楼u013165779的回复:
没明白你的是什么意思。
不好意思,我没有说清楚。
解决方案六:
问题已经解决了,我把上传文件页面的文件名由upload.jsp改成uploada.jsp就可以了。我猜可能是命名空间冲突之类的问题。下面是配置文件和上传页面的代码。<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>简单的文件上传</title></head><body><s:formaction="uploadPro"method="post"enctype="multipart/form-data"><s:textfieldname="title"label="文件标题"/><br/><s:filename="upload"label="选择文件"/><br/><s:submitvalue="上传"/></s:form></body></html><struts><constantname="struts.custom.i18n.resources"value="mess"/><!--设置该应用使用的解码集--><constantname="struts.i18n.encoding"value="GBK"/><packagename="lee"extends="struts-default"><!--配置处理文件上传的Action--><actionname="uploadPro"class="org.crazyit.app.action.UploadAction"><!--动态设置Action的属性值--><paramname="savePath">/uploadFiles</param><!--配置Struts2默认的视图页面--><result>/WEB-INF/content/succ.jsp</result></action><actionname="*"><result>/WEB-INF/content/{1}.jsp</result></action></package></struts>
解决方案七:
引用2楼u012601065的回复:
你上传文件的页面呢
谢谢你的回复~