Добавление jQuery в PrimeFaces приводит к тому, что Uncaught TypeError по всему месту

Я использую PrimeFaces 3.5 и JSF 2.0. Я хотел использовать плагин jQuery, поэтому я включил jQuery в свой webapp.

    

Однако при использовании компонентов PrimeFaces я получаю ошибки типа uncaught:

Uncaught TypeError: Невозможно прочитать свойство ‘length’ undefined

Uncaught TypeError: Object [object Object] не имеет метода ‘autocomplete’

Uncaught TypeError: Не удается прочитать свойство «keyCode» неопределенного

Uncaught TypeError: this.jq.draggable не является функцией

Uncaught TypeError: Не удается прочитать свойство «LinearAxisRenderer» неопределенного

Uncaught TypeError: Object [object Object] не имеет метода ‘fileupload’

Uncaught TypeError: this.jqEl.datetimepicker не является функцией

И т.п.

Как это вызвано и как я могу его решить?

    PrimeFaces – это библиотека компонентов JSF, основанная на jQuery. Он уже поставляется с jQuery и jQuery UI из коробки. Неправильно вручную загрузить другую копию пользовательского интерфейса jQuery / jQuery по какой-либо причине. Несколько разных файлов jQuery с версией только конфликтуют друг с другом таким образом, потому что они не обязательно используют / совместно используют одни и те же переменные / функции.

    Избавьтесь от всех загруженных вручную файлов jQuery / UI. Это не имеет никакого смысла.

    Если вы это сделали, потому что вам нужно использовать некоторую магию jQuery / UI на какой-либо странице, которая не обязательно использует компоненты PrimeFaces (и, следовательно, ее связанный jQuery не будет автоматически включен и, следовательно, $() будет недоступен), тогда вы всегда можете вручную явно включать пакет jQuery, связанный с PrimeFaces, в каком-то основном шаблоне, как показано ниже:

       

    ( target="head" не нужна, если вы укажете их непосредственно внутри )


    Если вам абсолютно необходимо предоставить свою собственную версию jQuery, потому что тот, который входит в PrimeFaces, устарел, тогда у вас есть 2 варианта:

    • Пусть ваш webapp будет поставляться на одном и том же идентификаторе ресурса (library / name) /resources/primefaces/jquery/jquery.js (не изменяйте путь и имя файла!). Затем это будет выбрано вместо пакета PrimeFaces.

    • Распакуйте primefaces.jar , замените файл /META-INF/resources/primefaces/jquery/jquery.js на новую версию (не изменяйте путь и имя файла!), primefaces.jar новый primefaces.jar .

    (и не забудьте удалить все те ссылки в собственную копию)

    Испытайте, однако, толерантно. Некоторые функции PrimeFaces могут нарушаться при обновлении из-за незначительных изменений / исправлений в более новой версии jQuery по сравнению с пакетом PrimeFaces.

    Прежде всего, вы должны быть абсолютно уверены, что не предоставляете несколько копий jQuery / UI, или вы по-прежнему сталкиваетесь с конфликтами / столкновениями, как в настоящее время. Использование $.noConflict() как могут предложить некоторые люди, абсолютно не имеет намерения использовать несколько библиотек jQuery. Он намерен использовать jQuery вместе с другой JS-библиотекой, которая по совпадению также использует глобальную функцию $() , такую ​​как Prototype. См. Также aQ JQuery и прототип noconflict .

    Interesting Posts

    Подключите маршрутизатор к другому беспроводному маршрутизатору

    Как разбить строку на подстроки заданной длины?

    Разница между CSS-селектором и фильтром jQuery?

    Имеет ли xslt функцию split ()?

    Алгоритм для микширования звука

    Применение пользовательских фильтров к выходу камеры

    Синтаксис выражения SQL-выражения?

    Ява. Игнорировать акценты при сравнении строк

    Ошибка «Файл метаданных … … \ Release \ project.dll» не найден в Visual Studio “

    Как изменить значки приложений в Windows 10

    Java generics – сделать Generic для расширения двух интерфейсов

    Получите все неединственные значения (то есть: дублировать / более одного вхождения) в массиве

    Поле электронной почты Facebook возвращает null (даже если разрешение «электронная почта» установлено и принято)

    Как создать прямую ссылку на любую коробку fancybox

    Chrome 18+: как разрешить встроенные скрипты с политикой безопасности контента?

    Давайте будем гением компьютера.