2023年12月8日发(作者:)

struts2上传文件异常:multipartrequest(jakarta)-[unknownlocation]

Struts2上传文件异常: eException:

Unable to load bean

artRequest

(jakarta) - [unknown location]

在测试Struts2权威指南介绍的struts2文件上传,发现如下异常:

eException: Unable to load bean

artRequest

(jakarta) - [unknown location]

再回去仔细看该章节,发现是自己粗心了,忘记加所需要的两个除struts2外的jar文件.所加jar文件所图所示:

Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,而struts2的filter拦截了上传文件的动作,拦截器代码是这样写的:

//

public HttpServletRequest wrapRequest(HttpServletRequest

request, ServletContext servletContext) throws IOException {

// don't wrap more than once

if (request instanceof StrutsRequestWrapper) { return request;

}

String content_type = tentType();

if (content_type != null &&

content_f("multipart/form-data") != -1) {

MultiPartRequest multi =

getContainer().getInstance();

request = new MultiPartRequestWrapper(multi,

request, getSaveDir(servletContext));

} else {

request = new StrutsRequestWrapper(request);

}

return request;

}

注意MultiPartRequest multi =

getContainer().getInstance();这句是上传文件时拦截器实现所需要的,出错的原因是所不到的实现类.这个类在上传框架jar文件中.这是文件上传fileupload解析器。

因此,如果需要使用Struts2的文件上传功能,则需要在web应用中增加两个JAR文件,即和。将这个包或是包的最新版本放在工程的lib目录下,即解决以上异常问题,成功实现文件的上传.