1. 程式人生 > >JSP中使用UEditor遇到的問題

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", /* 檔案訪問路徑字首 */