2014-09-26 69 views
0

我試圖使用RichFaces 4.2和我自己的自定義TinyMCE的富文本編輯器(基於3.5.11版本)。RichFaces的4.2和TinyMCE的

編輯正在安裝像官方教程(http://www.tinymce.com/wiki.php/Installation)。它的工作原理和編輯器適用於任何textarea。

我的問題是AJAX提交後,當形式重新呈現,所以TinyMCE的實例丟失,不再適用。

有一些方法來處理它,在每一個AJAX提交或任何其他方式重新應用TinyMCE的?

回答

0

我這樣做,使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可以獲取這些值並將其發送到後端。