以下是该方案。
查看A - 通过在浏览器中键入URL来加载。通过按下primefaces(PF - 5.2)命令按钮提交帖子请求,然后导航到另一个视图视图B.
查看B - 有一个preRenderView事件 - 在postBack = false上,它使用导航处理程序检查特定请求参数以及是否存在转发(非重定向)到另一个视图C.
查看C - 问题是当此视图加载时,Primefaces对象(javascript对象)被发现为null,例如对此脚本
"Uncaught TypeError: Cannot read property 'cw' of null"的错误
PrimeFaces.cw("CommandButton","widget_next3",{id:"next3",widgetVar:"widget_next3"});视图C具有与PF相关的组件,所以我猜PF js和css应该自动添加。我没有手动添加任何PF js或css或jquery js,所有这些都通过PF组件ResourceDependency自动包含。但在这种情况下,PF css既不包括也不包括js。
- 如果View B - preRenderView事件使用(重定向)faces-redirect = true导航到View C,则View C上的一切正常。
在错误情况下,如果我通过jquery检查 - 它将PF对象提供为null。
<h:outputScript>
$( document ).ready(function() {
console.log( "ready!" );
console.log( "Windows PrimeFaces=" + (window.PrimeFaces) );
console.log( "PrimeFaces=" + (PrimeFaces) );
});
</h:outputScript>
但我想知道为什么问题只出现在PF(js和css)上,为什么JQuery对象&#34; $&#34;工作正常 - 因为上述功能正常。
同样在错误场景中,如果我明确包含以下内容,那么一切都很好
<h:outputScript name="primefaces.js" library="primefaces"/>
<h:outputStylesheet name="primefaces.css" library="primefaces" />
<h:outputStylesheet name="theme.css" library="primefaces-aristo" />
感谢您的关注。
答案 0 :(得分:0)
警告之前是否有错误“主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。有关更多帮助,请查看https://xhr.spec.whatwg.org/”?
我遇到了同样的错误,发现我的浏览器(chrome)在ajax警告后没有加载PrimeFaces脚本。就像警告之后一样,Chrome会默认设置async = true,并且会以某种方式搞乱使用primefaces javascript文件。
为了测试,我在每个视图中添加了以下指令并解决了问题。
$(document).ready(function() {
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) { options.async = false; })
});
我仍在尝试了解为什么Chrome没有通过异步请求加载javascript文件。