在AJAX JSF请求后重新加载Javascript

在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}"

我使用的是TinyMCE编辑器,当我试图打开一个模态对话框时,TinyMCE不会被渲染

看:

我的页面:

<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();
   }
}