您的位置:首页 > 编程语言 > Java开发

Struts2上传文件异常

2013-10-14 21:57 363 查看
 


Struts2上传文件异常: java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest
(jakarta

分类: Struts22008-11-07
13:58 2855人阅读 评论(2) 收藏 举报
strutsbeanjar框架filter测试

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

 java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]

...........................

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

 



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

//org.apache.struts2.dispatcher.Dispatcher.java

public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException {

        // don't wrap more than once

        if (request instanceof StrutsRequestWrapper) {

            return request;

        }

        String content_type = request.getContentType();

        if (content_type != null && content_type.indexOf("multipart/form-data") != -1) {

            MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class);

            request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext));

        } else {

            request = new StrutsRequestWrapper(request);

        }

        return request;

    }

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

因此,如果需要使用Struts2的文件上传功能,则需要在web应用中增加两个JAR文件,即commons-io-1.4.jar和commons-fileupload-1.2.1.jar。将这个包或是包的最新版本放在工程的lib目录下,即解决以上异常问题,成功实现文件的上传.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Struts2异常