首先上个图,看看你的是不是这个问题:如果是请继续往下看,不要急,急了就会浪费更多的时间,这是我在解决这个为题中学到的。
解决思路是,重写struts2中的一个转换的类,然后配置struts2使用我们重写的这个类。
我在网上找了一段代码 即增加创建一个过滤器,用来过滤ueditor的上传请求:
package cn.piaole.mybatis.demo.util.common;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.dispatcher.StrutsRequestWrapper;
public class UeditorFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String url = request.getRequestURI();
if (decideURI(url)) {
chain.doFilter(new StrutsRequestWrapper((HttpServletRequest) req), res);
}else{
chain.doFilter(req, res);
}
}
/**
* ueditor编辑器中的图片上传和文件上传
* @param url
* @return
*/
private boolean decideURI(String url){
if(url.endsWith("imageUp.jsp")){
return true;
}else if(url.endsWith("fileUp.jsp")){
return true;
}//此处可能需要修改
return false;
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
由于我使用的是最新的百度UEditor编辑器,所以上传图片不是使用的imageUp.jsp
所有的上传都是使用的controller.jsp,所以将if中的判断改为
if (url.endsWith("controller.jsp")) {
return true;
}
即可
注意还需要在web.xml中配置使用上面定义的过滤器,代码如下
<filter>
<filter-name>struts2</filter-name>
<filter-class>cn.piaole.mybatis.demo.util.common.UeditorFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
就此,问题得到解决
由于本人水平有限,文章中难免会有一些疏漏,请大家多多指出,谢谢!