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

论坛 期权论坛 脚本     
匿名技术用户   2020-12-29 06:30   84   0
  • 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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP