上一节简单讲解了Ueditor的初级使用方法。这一节就把Ueditor集成到 SSH框架中。
运用到新闻模块的,添加,修改功能中
ssh框架中关于Ueditor配置方式和上一节讲解的一样。不会的请看上一节内容。
添加模块
使用思想是这样的:通过JavaScript脚本将Ueditro编辑器中的内容获取后赋值给springMVC的form表单。最终还是有springMVC的form表单提交数据到Controller
添加界面引入需要的js文件注意标记红色的地方(必须写这样写路径,不然有可能找不到文件,显示不出来Ueditor的界面,具体请看我最下面的:可能遇到的问题:Ueditor界面显示不出来)
代码如下:
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath }/utf8-jsp/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath }/utf8-jsp/ueditor.all.min.js">
</script>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<script type="text/javascript" charset="utf-8"
src="${pageContext.request.contextPath }/utf8-jsp/lang/zh-cn/zh-cn.js"></script>
getContent()方法:获取编辑器文本内容,然后赋值给springMVC的form表单
<script type="text/javascript">
//保存方法
//实例化编辑器
//建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例
//var ue = UE.getEditor('editor');
var ue = UE.getEditor('editor');
function getContent() {
var detail = document.getElementById("detail");
var arr = [];
//arr.push("使用editor.getContent()方法可以获得编辑器的内容");
//arr.push("内容为:");
arr.push(ue.getContent());
//alert(arr.join("\n"));
detail.value = arr;
}
</script>
编辑模块
编辑模块分显示和提交两个步骤,
显示:思想正好和提交相反:这次是获取form表单内容,赋值给Ueditor显示出来。
提交:提交步骤跟上面的添加一样:获取Ueditor的内容,然后赋值给form表单提交。
提交就不说了。
光说显示吧:需要注意的是,给Ueditor添加监听,确定ueditor初始化显示工作完成后,才能给Ueditor赋值 ue.setContent()
var ue = UE.getEditor('editor');
function setContent() {
var detail = document.getElementById("detail").value;
//alert(detail);
//编辑方法 // editor准备好之后才可以使用
ue.addListener("ready", function () {
//alert(detail);
// ue.setContent(detail); //为什么这样写不行?跟下面的写法有什么区别吗?TMD日了狗了
ue.setContent(document.getElementById("detail").value);
});
}
调用的时候也必须在显示Ueditor 和form表单的的下面,原因就是等ueditor初始化和form内容显示完毕两个条件确一不可如下:
注意:setContent()方法有个坑。如下:必须使用红色框里面的方式,红色框上面注释的方式不行,虽然我看不出两者的 区别。推测是setContent()方法有限制吧。
提交的时候更添加一样不要忘记调用getContent()方法
如果你的Ueditor界面显示不出来请看下面的内容:
可能遇到的问题:Ueditor界面显示不出来
在进行到新闻添加的时候集成了Ueditor到SSH中,一切都进行的是那么的顺利和美好。
但是进行到新闻的修改模块的时候出现了“”Ueditor界面显示不出来“的问题。而且测试发现修改界面的Ueditor一直是初始化准备工作结束不了(也就是初始化失败了界面显示不出来了)
原因分析:
分析一:可能是新闻修改界面关于Ueditor的代码写的有问题了。我开始一点点的检查。检查了至少10遍我感觉,没有一点差错了。这个原因排除。
分析二:因为在新闻的添加模块中Ueditor界面都是正常显示和使用的。所以Ueditor的配置绝逼没问题。
分析三:上面两个都没有问题。那么添加模块和修改模块到底有哪些区别和不一样的地方? 两者不一样的地方一定是原因的所在!!!!我坚信是这样的。
我开始查找两个模块不一样的地方了。(本来有个想法以为是Ueditor和SpringMVC框架冲突了(但是添加界面是正常的,不应该添加的时候不冲突,修改的时候冲突了,就算是这样也是两者不一样的地方导致的冲突)
首先我是这样排查的:把添加界面的代码全部复制粘贴给修改界面。两个界面的代码一模一样,但是添加界面的能正常显示,修改界面的还是不能显示。日了够
因为是界面显示不出来,所以先不管其他的,先把Ueditor界面显示出来再说。于是乎我把不相关的代码全部删除了。就留了一个显示Ueditor的代码
结果还是不行。
分析四:经过第三步,排除了前端界面代码的问题。一定是后端请求代码的问题。于是我认真查看了后端代码
添加界面的后端代码:
修改界面后台代码:
两者的区别我已经标出来了。
是的就是这里。这是SpringMVC中其实存在的一个坑。
修改界面的请求路径@PathVariable,导致的请求路径变化。请求界面资源查找不到了。
这时候ueditor的资源包路径就需要这样写了,一定要加上红框里面的代码。不然就找不到了(因为添加界面没有使用@PathVariable,所以之前的路径写法也是能找到资源的)。草
之前:
修改为:
这个问题我弄了一下午加一晚上了。真是TMD操蛋啊!
完!