有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

每个Ajaxcall上(之前和之后)的java Javascript

由于我正在使用TinyMCE(请不要进入“Primefaces有一个编辑器”或任何类似的内容),我需要在每次Ajax调用之前和之后执行一小段Javascript。我不想编辑每一个Ajax调用,因为有很多(这样做对于将来的任何维护都是不好的做法)

在页面上执行任何Ajax调用之前和之后的Javascript最优雅的解决方案是什么

注意:我正在为TinyMCE-text区域使用一个自定义的composite。这个对象的任何事件也足够了。但是请记住,实际的Ajax-触发器可能会被完全不同的对象调用(尽管如此,仍然可以重新引发composite


共 (2) 个答案

  1. # 1 楼答案

    JSF的<f:ajax>标记有一个onevent属性,用于在JSF应用程序中执行AJAX任务。基本上,它指定了一个三次调用的JavaScript函数:在发送AJAX调用之前,在接收AJAX响应之后,以及在更新HTMLDOM之后。正是出于这个目的,PrimeFaces将这些回调分别拆分为onstartonsuccessoncompleteonerror

    为了避免重复,您可以在How to re-execute javascript function after form reRender?的答案中找到用法示例

  2. # 2 楼答案

    使用^{}处理程序

    jsf.ajax.addOnEvent(function(data) {
        switch(data.status) {
            case "begin":
                // This is invoked right before ajax request is sent.
                break;
    
            case "complete":
                // This is invoked right after ajax response is returned.
                break;
    
            case "success":
                // This is invoked right after successful processing of ajax response and update of HTML DOM.
                // In case you're interested in error handling, use jsf.ajax.addOnError handler.
                break;
        }
    });
    

    只需将它放在一个JS文件中,该文件包含在所需页面的<h:outputScript target="head">中。这将确保它在包含jsf名称空间的JSF自己的jsf.js之后加载