我正在使用Struts2构建Web应用程序。还有一小部分涉及文件上传。文件上传效果很好。但是,当我选择不上传文件时,会抛出NullPointerException
。我在代码中处理此问题的唯一方法是catch(NullPointerException NPE)
。并且部分代码会重复出现。我希望避免这种情况。
有没有办法在Struts2中处理NULL
文件上传?
我的HTML文件:
<s:file style="height:auto;width:550px;display:inline;align:center;" name="userImage" cssClass="text input" onchange="checkFile(this)"/>
我的Java动作代码处理这个:
try{
String filePath = servletRequest.getSession().getServletContext().getRealPath("/");
System.out.println("Server path:" + filePath);
File fileToCreate = new File(filePath, this.userImageFileName);
FileUtils.copyFile(this.userImage, fileToCreate);}
catch(NullPointerException NPE){//if I choose to NOT upload a file}
catch(Exception E){//some code}
我已经尝试了getUserImage()==null
,但它没有帮助。我绝对有来处理 {/ 1}}块内的其余代码吗?
答案 0 :(得分:1)
最有可能的是,NullPointerException
被抛出以下两行之一
File fileToCreate = new File(filePath, this.userImageFileName);
FileUtils.copyFile(this.userImage, fileToCreate);
因为this.userImageFileName
和/或this.userImage
是null
,如果您没有上传文件。
所以,试试这个:
if(this.userImageFileName != null && this.userImage != null){
File fileToCreate = new File(filePath, this.userImageFileName);
FileUtils.copyFile(this.userImage, fileToCreate);
}
现在,由于您提前检查了NullPointerException
,因此不会发生null
。