JSP中使用UEditor遇到的問題
開發工具:MyEclipse10
UEditor版本:1.4.3,UTF-8
主要是講本人遇到的問題,使用步驟就只粗略地講一下了。
1. 將從官網下載的UEditor解壓之後複製到Web工程的WebRoot目錄下,記得把ueditor/jsp/lib/中的jar包複製到WebRoot/WEB-INF/lib/中。
引入之後可能回出現各種錯誤提示,基本不影響使用,可以右擊ueditor資料夾,選擇MyEclipse>Manage Validation...,在Excluded Resources中將ueditor資料夾選中,這樣編譯器就不會去檢查ueditor資料夾中的程式碼了。
2. 在JSP頁面上引用UEditor的JS檔案。
<script type="text/javascript" charset="utf-8" src="ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charser="utf-8" src="ueditor/lang/zh-cn/zh-cn.js"></script>
3. 在body當中放置UEditor。
<div>
<script id="ueditor" type="text/plain">初始化內容</script>
<div>
4. 例項化UEditor。
<script>
var ue = UE.getEditor("ueditor");
</script>
完成以上4步就可以在頁面中看到UEditor了,下面講具體遇到的問題。
1. 亂碼問題
UEditor內容提交到後臺之後就亂碼了。
前後臺編碼統一這個就不提了,筆者專案當中都是用的UTF-8編碼。講到這裡順便說一下,下載的UEditor是UTF-8版本,如果開發工具沒有設定成UTF-8編碼,UEditor中的中文註釋就變成亂碼了。右擊Web工程,點選Properties,就可以在Resource中設定編碼。
言歸正傳,我亂碼的原因在於form沒有設定為POST。改一下method就可以不會出現亂碼了。
<form action="#" method="POST">
2. java.lang.NoSuchMethodError
UEditor上傳檔案之後出現的錯誤,沒有找到上傳檔案的方法。
這是由於UEditor1.4.3用來上傳檔案的jar包是commons-io-2.4.jar,而伺服器卻用了一個老版本的jar包,在tomcat\webapps\中找到部署的專案,從WEB-INF\lib\目錄中刪除老版本的jar包即可。
3. 上傳檔案之後提示找不到上傳資料。
我使用的Struts2框架,Request當中有關檔案的請求被攔截了,自己寫個攔截器放過UEditor就可以了。
首先新建一個過濾器類。
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
public class FilterForUeditor extends StrutsPrepareAndExecuteFilter {
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String url = request.getRequestURI();
// 不過濾UEditor的請求
if (url.contains("/employment/ueditor/")) {
// System.out.println("使用自定義的過濾器" + url);
chain.doFilter(req, res);
} else {
// System.out.println("使用預設的過濾器");
super.doFilter(req, res, chain);
}
}
}
然後在web.xml當中將struts2的過濾器註釋掉,加上剛剛自定義的過濾器。
<filter>
<filter-name>struts2</filter-name>
<!-- Struts2的過濾器 -->
<!--
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
-->
<!-- 自定義的過濾器 -->
<filter-class>com.myFilter.FilterForUeditor</filter-class>
</filter>
重新執行網站即可成功上傳檔案。4. 成功上傳附件之後,點選附件連結卻出現404錯誤。
在ueditor/jsp/lib/當中找到config.json,在檔案訪問路徑字首中寫上自己部署的Web工程名稱。
"fileUrlPrefix": "/projectName", /* 檔案訪問路徑字首 */