关于SSH与百度ueditor整合的时候出现的问题

来源:互联网 发布:知乎中文夹杂英文 编辑:程序博客网 时间:2024/06/15 15:23
  • ueditor的组件被struts2拦截下来导致ueditor不可用
  1. 检查项目中是否使用了urlrewrite来重写url,这会导致ueditor资源被重定向,导致不可用
  2. struts2本身的过滤器也会过滤ueditor的部分组件


通过浏览器调试可以看到ueditor需要的组件会报404错误,然后根据所报错的组件定位是被谁拦截了


第一种情况,如果是urlrewrite则修改转发规则,或直接注释掉。
第二种情况,需要重写自定义的过滤器,方法如下:


import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest;public class RequestParseWrapper extends JakartaMultiPartRequest {    public void parse(HttpServletRequest servletRequest, String saveDir)throws IOException    {    }}



struts中加上这个bean

<bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest"      name="myRequestParser" class="net.jeeshop.core.util.RequestParseWrapper"      scope="default" optional="true" />    <constant name="struts.multipart.handler" value="myRequestParser" />





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 init(FilterConfig filterConfig) throws ServletException {    }    @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);        }    }    @Override    public void destroy() {    }    private boolean decideURI(String url){        if(url.endsWith("controller.jsp")) {  // 主要是ueditor的这个请求被struts2拦截了,自定义过滤器中将本请求放行即可正常使用ueditor            return true;        }        return false;    }}



在web.xml中struts2的过滤器前加上这个自定义的过滤器即可

<filter><filter-name>ueditorFilter</filter-name><filter-class>net.jeeshop.core.util.UeditorFilter</filter-class></filter><filter-mapping><filter-name>ueditorFilter</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping>




其实还有一个问题会导致ueditor不可用,就是jar包冲突,解决办法就是以你下载的ueditor里面的jar包版本为主,其他版本的jar包删除即可。

0 0