Struts2中使用Fckeditor上传文件报错

xiaoxiao2022-06-12  28

今天在Struts2项目中使用Fckeditor上传文件时报如下异常: java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] 上网搜了一下,主要是因为与struts2拦截器的拦截发生冲突引起的原因: 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目录下,即解决以上异常问题,成功实现文件的上传。 上传图片时弹出完全警告: Security error. You probably don't have enough permissions to upload. Please check your server struts2对request进行了封装,所以当fck的request.getinputStream的时候就会出错.修改的方法就是对filtermapping的路径进行修改。 解决方法如下: 将下面代码中的“/*” <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 改为:“*.action”。 另外,jsp页面上面用到了struts2的tag,那么就要增加一个*.jsp的url-pattern。 如下: <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
转载请注明原文地址: https://www.6miu.com/read-4933756.html

最新回复(0)