在AJAX JSF请求后重新加载Javascript
我使用的是TinyMCE编辑器,当我试图打开一个模态对话框时,TinyMCE不会被渲染 看: 我的页面:在AJAX JSF请求后重新加载Javascript,javascript,ajax,jsf,jsf-2,Javascript,Ajax,Jsf,Jsf 2,我使用的是TinyMCE编辑器,当我试图打开一个模态对话框时,TinyMCE不会被渲染 看: 我的页面: <div class="form-group"> <label>Conteúdo *</label> <h:inputTextarea value="#{cursoMB.paginaConteudo.conteudo}"
<div class="form-group">
<label>Conteúdo *</label>
<h:inputTextarea value="#{cursoMB.paginaConteudo.conteudo}"
id="conteudo" required="true"
requiredMessage="O conteúdo é obrigatório"
styleClass="form-control tinymce">
</h:inputTextarea>
</div>
您必须在ajax调用后初始化小部件,您可以通过以下方式在
f:ajax
上附加javascript事件侦听器:
<f:ajax execute="@this" render="modalPagina" onevent="handleAjaxResponse"/>
function handleAjaxResponse(data) {
if (data.status === 'success') {
initTinymce();
}
}
函数响应(数据){
如果(data.status==“成功”){
initTinymce();
}
}
我不建议在您的案例中使用jsf.ajax.addOnEvent回调,因为每次对服务器进行ajax调用时,小部件都将处于init状态。我尝试了这个方法,但没有成功。不渲染tinyMCE。我在handleJaxResponse()中放入了一个console.log,这是正常调用的。initTinymce()函数可能有问题。在ajax调用之后,您是否可以在浏览器的控制台中手动执行initTinymce()函数以检查是否有错误。嗯,我在控制台中执行了“initTinymce()”并得到:undefined。如果我执行“initTinymce”,我得到的函数代码是returnyes,这是正常的,它显示为未定义,因为函数没有返回值,但小部件在执行函数initTinymce()后正确显示;不满意,当我在浏览器控制台中执行initTinymce()时,模态对话框小部件在没有编辑器的情况下继续。
<h:commandButton styleClass="btn btn-default" type="button"
value="Criar Página"
actionListener="#{cursoMB.novaPaginaConteudo()}">
<f:passThroughAttribute name="data-toggle" value="modal" />
<f:passThroughAttribute name="data-target"
value="#modalDialogPagina" />
<f:ajax execute="@this" render="modalPagina" />
</h:commandButton>
$(document).ready(function() {
initTinymce();
jsf.ajax.addOnEvent(ajaxHandleTinymce);
});
function ajaxHandleTinymce(data){
console.log('ajaxHandle');
initTinymce();
}
function initTinymce(){
tinymce.init({
selector: ".tinymce",
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});
}
<f:ajax execute="@this" render="modalPagina" onevent="handleAjaxResponse"/>
function handleAjaxResponse(data) {
if (data.status === 'success') {
initTinymce();
}
}