Javascript Primefaces脚本完成后调用我的jQuery函数
说明: 使用Primefaces时,html页面由Servlet呈现。有时Servlet只生成html标记,但有时生成javascript 案例1 XHTML:Javascript Primefaces脚本完成后调用我的jQuery函数,javascript,jquery,jsf-2,primefaces,Javascript,Jquery,Jsf 2,Primefaces,说明: 使用Primefaces时,html页面由Servlet呈现。有时Servlet只生成html标记,但有时生成javascript 案例1 XHTML: 生成: 你好!!! 在这种情况下,使用jQuery脚本添加附加回调非常容易。因为所有html元素都已生成 案例2: XHTML: 当我想在Primefaces中加载页面后执行JS函数时,有两种方法适合我: 或者使用jQuery(因为Primefaces已经使用它),最好的解决方案是嵌套document.ready两次,这样我的
生成:
你好!!!
在这种情况下,使用jQuery脚本添加附加回调非常容易。因为所有html元素都已生成
案例2:
XHTML:
当我想在Primefaces中加载页面后执行JS函数时,有两种方法适合我:
- 或者使用jQuery(因为Primefaces已经使用它),最好的解决方案是嵌套document.ready两次,这样我的JS代码在所有Primefaces代码之后执行:
jQuery(文档).ready(函数(){
jQuery(文档).ready(函数(){
//在document.ready中执行两次,可在Primefaces回调后执行
myInitialisationFunction();
});
});代码>
- 或者将p:remoteCommand与自动运行一起使用,并将oncomplete JS回调放在其上
- 这种方式表单由AJAX提交到服务器,但服务器端不执行侦听器,之后执行JS回调
您没有指定正在使用的PrimeFaces版本。但是,从PrimeFaces 7.0开始,没有PrimeFaces就绪的事件。这是2019年PrimeFaces核心开发人员tandraschko
他的建议是,在页面的末尾添加一个-handler,它应该在PrimeFaces之后添加ready()-handler(这实际上对初始化也有同样的作用)
在末尾添加ready()-处理程序可以直接通过XHTML代码中的
或
来完成,也可以使用OmniFaces组件来完成,该组件可以放置在XHTML中的任何位置,但会在生成的HTML中重新定位到末尾。下面是一些示例代码:
<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:o="http://omnifaces.org/ui"
xmlns:p="http://primefaces.org/ui">
<o:onloadScript rendered="#{not faces.ajaxRequest}">
$(function() {
console.log('PrimeFaces now ready.');
})
</o:onloadScript>
<!-- your JSF and PrimeFaces components go here... -->
</ui:composition>
$(函数(){
log('PrimeFaces现在准备就绪');
})
我还使用嵌套的ready()-处理程序尝试了OndroMih的建议,这似乎也很有效