Struts2的Fileupload过程中的空指针异常

时间:2012-05-11 05:25:43

标签: struts2

我正在Struts2应用程序中进行文件上载过程。当我在动作类中显示filename和contenttype时,它显示空指针异常。

我已经包含了jar文件并使用了以下代码。

在upload.jsp

<s:form action="saveBulkStores.action" method="POST" enctype="multipart/form-data">
   <s:actionmessage name="message"/>
   <s:label value="File Name : *" />
   <s:file name="upload"  label="File" size="40"/>  
   <br> 
   <br> 
   <s:submit name="ADD" value="UPLOAD"/>
   <input type="button" onClick="cancelFunction()" name="Cancel" value="Cancel" tabindex="10"> 
</s:form>

在struts.xml中

<action name="saveBulkStores" class="com.rewardz.action.FilesUploadAction" method="saveBulkStores">  
   <interceptor-ref name="fileUpload">
      <param name="maximumSize">52428800</param>
   </interceptor-ref>
   <interceptor-ref name="basicStack"/> 
   <result name="input">/uploadfile.jsp</result>
   <result name="viewFile">/viewfile.jsp</result> 
   <result name="Reload">/uploadfile.jsp</result> 
</action>

在Action类中:

private File file;
private String contentType;
private String filename;


public void setUpload(File file) {
   this.file = file;
}

public void setUploadContentType(String contentType) {
   this.contentType = contentType;
}

public void setUploadFileName(String filename) {
   this.filename = filename;
}

public String saveBulkStores() throws IOException{
   System.out.println("check Bulk upload file");  
   String filePath = request.getRealPath("/");
   System.out.println("Server path:" + filePath);

   System.out.println("UPLOADFILECONTENT TYPE:"+contentType);
   System.out.println("UPLOADFILENAME:"+filename);
   System.out.println("UPLOADFILE:"+file);  

   System.out.println("**********************************");


   value = "viewFile";

   System.out.println("Forward Value:"+value);
   return value;
}

Server.log中的输出:(使用GlassFish Server)

check Bulk upload file
C:\glassfish3_installer\glassfish\domains\domain1\applications\My_Application\
UPLOADFILECONTENT TYPE:null
UPLOADFILENAME:null
UPLOADFILE:null

所以请任何人帮我在Struts2的上传过程中获取文件名,文件路径。

1 个答案:

答案 0 :(得分:0)

Hi Shiva问题在于您在动作类中使用的标记。

<s:file name="upload"  label="File" size="40" />  

在您的操作类中不存在upload属性的情况下,有一个属性文件文件,您使用文件而不是上传,以便解决您的问题

<s:file id="file" name="file"  />