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

关于Struts2+spring+maven中使用百度UEditor编辑器显示未找到上传数据的解决方案

2016-05-15 08:42 585 查看
首先上个图,看看你的是不是这个问题:如果是请继续往下看,不要急,急了就会浪费更多的时间,这是我在解决这个为题中学到的。

解决思路是,重写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>


就此,问题得到解决

由于本人水平有限,文章中难免会有一些疏漏,请大家多多指出,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: