1、信息: Unable to find ‘struts.multipart.saveDir‘ property setting. Defaulting to javax.servlet.context.tempdir
这是struts需要在struts.xml配置临时文件夹。
只需要在struts.xml的中添加一下语句即可。
原因:
1.struts.multipart.saveDir用于存放指定临时文件的文件夹,该配置在struts.properties文件中。例如:在struts.properties文件中加入如下代码:
struts.multipart.saveDir = /tmp
这样下次提交表单的时候就不会出现这个问题了!
2.如果没有用struts.properties文件,也可以在struts.xml中配置如下代码,效果一样:
2、上传图片时如果提示“上传数据找不到”,则我们不能用struts自己的过滤器,我们要自己写一个,以下为步骤:
增加创建一个过滤器,用来过滤ueditor的上传请求:
1 packageFilter;2
3 importjava.io.IOException;4
5 importjavax.servlet.Filter;6 importjavax.servlet.FilterChain;7 importjavax.servlet.FilterConfig;8 importjavax.servlet.ServletException;9 importjavax.servlet.ServletRequest;10 importjavax.servlet.ServletResponse;11 importjavax.servlet.http.HttpServletRequest;12
13 importorg.apache.struts2.dispatcher.StrutsRequestWrapper;14 //由于UEditor图片不能上传自制的Filter过滤器
15 public class UeditorFilter implementsFilter {16
17 @Override18 public voiddoFilter(ServletRequest req, ServletResponse res,19 FilterChain chain) throwsIOException, ServletException {20 HttpServletRequest request =(HttpServletRequest) req;21 String url =request.getRequestURI();22
23 if(decideURI(url)) {24 chain.doFilter(newStrutsRequestWrapper((HttpServletRequest) req), res);25 }else{26 chain.doFilter(req, res);27 }28
29 }30
31 /**
32 * ueditor编辑器中的图片上传和文件上传33 *@paramurl34 *@return
35 */
36 private booleandecideURI(String url){37 if(url.endsWith("imageUp.jsp")){38 return true;39 }else if(url.endsWith("fileUp.jsp")){40 return true;41 }//此处可能需要修改
42 return false;43 }44
45 @Override46 public voiddestroy() {47
48 }49
50 @Override51 public void init(FilterConfig filterConfig) throwsServletException {52
53 }54
55 }
UeditorFilter
由于最新的百度UEditor编辑器,上传图片不是使用的imageUp.jsp
所有的上传都是使用的controller.jsp,所以将if中的判断改为
if (url.endsWith("controller.jsp")) {
return true;
}
即可
注意还需要在web.xml中配置使用上面定义的过滤器,替换原来的那个默认过滤器,代码如下 :
1
2 struts2
3 Filter.UeditorFilter
4
5
6 struts2
7 /*8
就此,问题得到解决