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

  • 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包删除即可。

猜你喜欢

转载自blog.csdn.net/javaer_lee/article/details/52909439