Почтовый запрос JSF 2.2 перенаправляется в другое представление через событие preRenderView - ресурсы PF отсутствуют

Вот сценарий.

Представление А — загружается путем ввода URL-адреса в браузере. Отправьте запрос на публикацию, нажав командную кнопку с простыми лицами (PF - 5.2), а затем перейдите к другому представлению View B.

Представление B — имеет событие preRenderView — при postBack=false, которое проверяет определенный параметр запроса и, если он присутствует, перенаправляет (не перенаправляет) в другое представление C, используя обработчик навигации.

View C - Problem is when this view loads up, Primefaces object (javascript object) is found as null, e.g. error as

 "Uncaught TypeError: Cannot read property 'cw' of null" 
against this script
PrimeFaces.cw("CommandButton","widget_next3",{id:"next3",widgetVar:"widget_next3"}); 
View C has components related to PF, so i guess PF js and css should get added automatically.I didn't added any PF js or css or jquery js manually, all getting included automatically through PF component ResourceDependency. But in this case neither PF css gets included nor js.

-- Все работает нормально в представлении C, если в представлении B - событие preRenderView переходит к представлению C с (перенаправлением) Faces-redirect=true.

В случае ошибки, если я проверяю через jquery - он дает объект PF как нулевой.

<h:outputScript>
$( document ).ready(function() {
                     console.log( "ready!" );
                     console.log( "Windows PrimeFaces=" + (window.PrimeFaces) );
                     console.log( "PrimeFaces=" + (PrimeFaces) );                        
                }); 
</h:outputScript>

Но мне интересно, почему проблема только с PF (js и css), почему объект JQuery "$" работает нормально - потому что вышеуказанная функция работает нормально.

Также в сценарии ошибки, если я явно включу следующее, тогда все в порядке

<h:outputScript name="primefaces.js" library="primefaces"/>
<h:outputStylesheet name="primefaces.css" library="primefaces" />
<h:outputStylesheet name="theme.css" library="primefaces-aristo" />

Спасибо, что посмотрели.


person user2555910    schedule 27.07.2015    source источник


Ответы (1)


Предшествовало ли этой ошибке предупреждение «Синхронный XMLHttpRequest в основном потоке устарел из-за его вредного воздействия на работу конечного пользователя. Для получения дополнительной справки посетите https://xhr.spec.whatwg.org/"?

Я столкнулся с той же ошибкой и обнаружил, что мой браузер (хром) не загружает скрипты PrimeFaces после предупреждения ajax. Это похоже на то, что после предупреждения Chrome установил async=true по умолчанию и каким-то образом испортил файлы javascript с простыми лицами.

Чтобы проверить, я добавил следующую инструкцию в каждое представление и решил проблему.

$(document).ready(function() {
    $.ajaxPrefilter(function( options, originalOptions, jqXHR ) { options.async = false; })
});

Я все еще пытаюсь понять, почему Chrome не загружает файлы javascript через асинхронный запрос.

person EduardoM    schedule 02.02.2016