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