创建一个Ueditor的控制器UeditorController,代码如下:
public class UeditorController extends BaseController {
private static Logger log = Logger.getLogger(UeditorController.class);
public void index() {
String webRoot = PathKit.getWebRootPath();
String seprator = File.separator;
String htmlText = new ActionEnter( getRequest(), webRoot+ seprator ).exec();
renderHtml(htmlText);
}
}
配置该控制器的路由:
add("/b/ueditor", UeditorController.class);
修改ueditor.config.js文件中的配置:
//var URL = window.UEDITOR_HOME_URL || getUEBasePath();
var URL = cxt + "/jsFile/ueditor/";
注:这里的URL是ueditor存放在工程中的根目录
将config.json文件拷贝到webapp目录下的b文件夹下,如果没有,则创建。这一步为什么必须是这样的?这个跟你的ueditor路由配置有关,一开始我以为放在类路径下就可以找到该文件,自动加载,后来发现程序并未加载到该文件,看了源代码才发现它是根据请求的路径来加载的,所以,config.json文件存放的位置和ueditor的路由配置有关,比如:路由是 /b/ueditor,那么config.json文件就应该放在webapp(不一定,反正就是那几个:webapp、webcontent等等名字)下的b文件夹。
接着修改config.json配置,由于我的jfinal过滤器拦截所有的请求,也即/*配置,所以config.json中的xxxActionName我没去动,比如:
"imageActionName": "uploadimage",
接着,使用的时候,上传一张图片,出现“未找到上传数据”的错误,由于该错误信息是被编码了,所以没法在工程中搜到,后来找到Ueditor包下的Uploader类,跟到了BinaryUploader这个类的save方法,里面有段代码(41-46行):
(FileItemIterator e = upload.getItemIterator(request)e.hasNext()fileStream = ) {
fileStream = e.next()(!fileStream.isFormField()) {
}
}
我发现这个e对象总是为空,百度了一大堆,结果都不靠谱,研究了半天,想起有可能是Ueditor控制器被拦截器处理过了的原因,接着我就在UeditorController这个类上加了去除拦截器的代码:
@Clear
UeditorController BaseController {
,重启,发现正常了。终于解决了这个蛋疼的问题。
描述可能不太清楚,但还是希望可以帮到一些人,如有疑问,请与我联系。