Richfaces 4.2和TinyMCE

时间:2014-09-26 18:47:58

标签: jsf richfaces tinymce-3

我正在尝试使用Richfaces 4.2和我自己的自定义TinyMCE富文本编辑器(基于版本3.5.11)。

编辑器的安装方式与官方教程(http://www.tinymce.com/wiki.php/Installation)类似。它起作用,编辑器适用于任何textarea。

我的问题是在ajax提交之后,当表单被重新呈现时,因此TinyMCE实例丢失并且不再应用。

有没有办法处理它,在每个ajax提交或任何其他方法上重新应用TinyMCE?

1 个答案:

答案 0 :(得分:0)

我做了一个允许TinyMCE与Richfaces ajax动作和渲染进行交互的解决方法,所以我会回答我自己的问题,尽管我认为它不是最好的答案。

这是我的解决方案:

将TinyMCE文件夹复制到我的WebContent / js文件夹,包括tiny.js这是一个init文件(外部文件可选)。

此文件包含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" 
});}

JSF 2 Javascript所做的是调用tinyMCEinit()函数来清除所有textareas并重新应用它们。当你第一次打开页面时,它工作得很好,可能是一个有点繁重的DOM处理,但最终用户将不会注意到加载...除非你的页面有4个texareas /编辑器,需要像Alternatives列表一样可编辑题。同一页面上的4个编辑器加载时间较慢,前一个版本丰富:editor / ckeditor会注意到性能丢失。

嗯,需要添加一点点javascript到你的" Save"像这样的按钮:

<a4j:commandButton onclick="tinyMCE.triggerSave();" render="some_panel" value="Any render"></a4j:commandButton>

triggerSave()将编辑器上的值(html)传递给h:inputTextarea,以便JSF可以获取值并将其发送到后端。