webwork里上传文件比较方便,几行代码就可以完成,
只是有个小问题,就是当form里的file控件没有选文件的时提交action 就会出现异常,
通常很多应用中不一定非要带文件上传的,这个应该算webwork一个bug吧。
从报错的地方可以查出是在fileupload拦截器中
String[] fileName = multiWrapper.getFileNames(inputName);
这一行开始中断掉的
就是multiWrapper.getFileNames(inputName);中出现空指针错误
如果webwork.properties中配置的是pell上传包
需要找到PellMultiPartRequest这个类的以下方法
public String[] getFileNames(String fieldName) {
// TODO - not sure about this - is this the filename of the actual file or
// TODO - the uploaded filename as provided by the browser?
// TODO - Not sure what version of Pell this class uses as it doesn't seem to be the latest 这里倒是说明了条件
return new String[]{multi.getFile(fieldName).getName()};
}
可以看到
multi.getFile(fieldName).getName()如果文件为空肯定会报错的
可以先修改成以下方式
public String[] getFileNames(String fieldName) {
if(multi.getFile(fieldName)!=null)
return new String[]{multi.getFile(fieldName).getName()};
else
return new String[]{};
}
这样form里file不选文件就不在出异常了