Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Richfaces 4.2和TinyMCE_Jsf_Richfaces_Tinymce 3 - Fatal编程技术网

Jsf Richfaces 4.2和TinyMCE

Jsf Richfaces 4.2和TinyMCE,jsf,richfaces,tinymce-3,Jsf,Richfaces,Tinymce 3,我正在尝试使用RichFaces4.2和基于3.5.11版的我自己定制的TinyMCE富文本编辑器 编辑器的安装与官方教程一样。它可以工作,并且编辑器可以应用于任何文本区域 我的问题是在ajax提交之后,当表单重新呈现时,TinyMCE实例将丢失,不再应用 有没有办法解决这个问题,在每个ajax提交或任何其他方法上重新应用TinyMCE?我做了一个变通方法,允许TinyMCE与Richfaces ajax操作和渲染交互,因此我将回答我自己的问题,尽管我相信这不是最好的答案 以下是我的解决方案:

我正在尝试使用RichFaces4.2和基于3.5.11版的我自己定制的TinyMCE富文本编辑器

编辑器的安装与官方教程一样。它可以工作,并且编辑器可以应用于任何文本区域

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


有没有办法解决这个问题,在每个ajax提交或任何其他方法上重新应用TinyMCE?

我做了一个变通方法,允许TinyMCE与Richfaces ajax操作和渲染交互,因此我将回答我自己的问题,尽管我相信这不是最好的答案

以下是我的解决方案:

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

该文件包含tinyMCE init config和JSF2 javascript,它们连接tinyMCE和render操作

下面是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" 
});}
JSF2JavaScript所做的是调用tinyMCEinit函数,该函数清除所有文本区域并再次应用所有文本区域。第一次打开页面时效果很好,可能有点重的DOM处理,但最终用户不会注意到加载。。。除非您的页面有4个文本区域/编辑器,并且需要像问题列表一样进行编辑。同一页面上的4个编辑器加载时间较慢,而以前的rich:editor/ckeditor会注意到性能损失

嗯,需要在保存按钮中添加一点javascript,如下所示:

<a4j:commandButton onclick="tinyMCE.triggerSave();" render="some_panel" value="Any render"></a4j:commandButton>
triggerSave将编辑器上的值html传输到h:inputTextarea,以便JSF可以获取这些值并将其发送到后端