我试图使用RichFaces 4.2和我自己的自定义TinyMCE的富文本编辑器(基于3.5.11版本)。RichFaces的4.2和TinyMCE的
编辑正在安装像官方教程(http://www.tinymce.com/wiki.php/Installation)。它的工作原理和编辑器适用于任何textarea。
我的问题是AJAX提交后,当形式重新呈现,所以TinyMCE的实例丢失,不再适用。
有一些方法来处理它,在每一个AJAX提交或任何其他方式重新应用TinyMCE的?
我试图使用RichFaces 4.2和我自己的自定义TinyMCE的富文本编辑器(基于3.5.11版本)。RichFaces的4.2和TinyMCE的
编辑正在安装像官方教程(http://www.tinymce.com/wiki.php/Installation)。它的工作原理和编辑器适用于任何textarea。
我的问题是AJAX提交后,当形式重新呈现,所以TinyMCE的实例丢失,不再适用。
有一些方法来处理它,在每一个AJAX提交或任何其他方式重新应用TinyMCE的?
我这样做,使TinyMCE的与Ajax4JSF的行为,并呈现交互的解决办法,所以我会回答我的问题,虽然我相信它不是最好的答案可能。
这是我的解决方案:
复印TinyMCE的文件夹到我的WebContent/JS文件夹,包括其是初始文件(外部文件可选)tiny.js。
该文件包含tinyMCE init配置和加入tinyMCE并呈现操作的JSF2 javascript。
这里是tiny.js代码:
jsf.ajax.addOnEvent(function(data) {
switch(data.status) {
case "begin":
tinyMCE.triggerSave();
break;
case "complete":
break;
case "success":
var i, t = tinyMCE.editors;
for (i in t){
if (t.hasOwnProperty(i)){
t[i].remove();
}
}
tinyMCEinit();
break;
}});
function tinyMCEinit(){
tinyMCE.init({
language : "pt",
mode : "textareas",
theme : "advanced",
mode : "textareas"
});}
2的Javascript做什么JSF被称之为清除所有文字区域的tinyMCEinit()函数,并再次重新一切。当你打开网页的第一次,也许有点沉重的DOM处理,但最终用户将不另行通知载入中...除非你页面有4 texareas /编辑和需要可编辑喜欢的替代品清单它的工作原理很好题。同一页上的4位编辑加载速度较慢,而且以前的内容丰富:editor/ckeditor会注意到性能已经下降。
嘛,一个小小的触摸的JavaScript需要被添加到您的“保存”按钮,这样的:
<a4j:commandButton onclick="tinyMCE.triggerSave();" render="some_panel" value="Any render"></a4j:commandButton>
的triggerSave()的编辑器将H传输值(HTML):inputTextarea所以JSF可以获取这些值并将其发送到后端。