關於Struts2+spring+maven中使用百度UEditor編輯器顯示未找到上傳資料的解決方案
阿新 • • 發佈:2019-01-10
首先上個圖,看看你的是不是這個問題:如果是請繼續往下看,不要急,急了就會浪費更多的時間,這是我在解決這個為題中學到的。
解決思路是,重寫struts2中的一個轉換的類,然後配置struts2使用我們重寫的這個類。
我在網上找了一段程式碼 即增加建立一個過濾器,用來過濾ueditor的上傳請求:
package cn.piaole.mybatis.demo.util.common; 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 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); } } /** * ueditor編輯器中的圖片上傳和檔案上傳 * @param url * @return */ private boolean decideURI(String url){ if(url.endsWith("imageUp.jsp")){ return true; }else if(url.endsWith("fileUp.jsp")){ return true; }//此處可能需要修改 return false; } @Override public void destroy() { } @Override public void init(FilterConfig filterConfig) throws ServletException { } }
由於我使用的是最新的百度UEditor編輯器,所以上傳圖片不是使用的imageUp.jsp
所有的上傳都是使用的controller.jsp,所以將if中的判斷改為
if (url.endsWith("controller.jsp")) {
return true;
}
即可
注意還需要在web.xml中配置使用上面定義的過濾器,程式碼如下
<filter> <filter-name>struts2</filter-name> <filter-class>cn.piaole.mybatis.demo.util.common.UeditorFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
就此,問題得到解決
由於本人水平有限,文章中難免會有一些疏漏,請大家多多指出,謝謝!