關於SSH與百度ueditor整合的時候出現的問題
阿新 • • 發佈:2018-11-16
- 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包刪除即可。