Я добавил TinyMCE на веб-сайт (JSF-2, Tomcat 7, Mojarra 2.1.6). Когда пользователь нажимает кнопку «Обновить», текст HTML в редакторе анализируется и печатается где-то еще на странице.
Мне нужно отключить TinyMCE перед запросом Ajax (в противном случае у меня будет два редактора). Это также рекомендуется в документации TinyMCE.
Итак, я добавил событие f: ajax к кнопке:
<h:commandButton value="#{msg['rt.refresh']}" action="#{updateTextAction.execute}" onclick="cleanupRte();">
<f:ajax event="action" execute="@this" render="@all" onevent="disposeTinyMce" />
</h:commandButton>
функции javascript вызываются правильно:
function cleanupRte() {
tinyMCE.triggerSave();
return true;
}
и метод onevent:
function disposeTinyMce(e) {
if(e.status == 'begin') {
tinyMCE.triggerSave();
var elem = document.getElementById("mainForm:rteExtAdr:input");
alert(elem.value);
tinyMCE.execCommand('mceRemoveControl', false, 'mainForm:rteExtAdr:input');
}
if(e.status == 'complete') {
}
if(e.status == 'success') {
tinyMCE.execCommand('mceAddControl', false, 'mainForm:rteExtAdr:input');
}
return true;
}
, который отключает редактор и добавляет его обратно на страницу. Это работает нормально.
Проблема в том, что модель не обновляется значением из текстового поля, хотя предупреждение показывает правильное значение. Запрос также содержит «старое» значение из текстового поля.
Есть ли что-то, что мешало бы вызову ajax увидеть текущие значения формы?
или он считывает значения перед выполнением функции onevent?
Если я удаляю тег f: ajax полностью, модель обновляется, но у меня возникают проблемы с дублированием редактора TinyMce после ответа.
вызов инициализации:
tinyMCE.init({
mode : "textareas",
theme : "advanced",
editor_selector : "sesamWysiwyg",
language : "de",
force_br_newlines : true,
force_p_newlines : false,
inline_styles : false,
forced_root_block : '', // Needed for 3.x
plugins : "autolink,lists,style,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,searchreplace,print,paste,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras,wordcount,advlist",
formats : {
underline : {inline : 'u', exact : true},
strikethrough : {inline : 'del', exact : true}
},
theme_advanced_buttons1 : "bold,underline,strikethrough,|,cut,copy,paste,pastetext,pasteword,search,replace,|,undo,redo,|,code,removeformat,|,charmap",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_buttons4 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
content_css : "css/content.css",
});
Любые идеи или предложения будут великолепны!
спасибо:)