- ueditor的组件被struts2拦截下来导致ueditor不可用
- 检查项目中是否使用了urlrewrite来重写url,这会导致ueditor资源被重定向,导致不可用
- 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包删除即可。