2017-02-22 11 views
1

У меня проблема с заказом импорта JQuery. В головной части я:PrimeFaces и JQuery: упорядочение ресурсов

<h:head> 
<f:facet name="first"> 
    <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> 
</f:facet> 
<f:facet name="middle"> 
    <h:outputScript library="primefaces" name="jquery/jquery-plugins.js" target="head" /> 
</f:facet> 
... 

В первый раз моя страница загружается все кажется правильным, особенно JQuery/JQuery-плагин заказ:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"><head id="j_idt2"> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/theme.css.jsf?ln=primefaces-aristo" /> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/components.css.jsf?ln=primefaces&amp;v=6.0" /> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/css/default/core.css.jsf?ln=bsf" /> 
<link type="text/css" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" /> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/css/bsf.css.jsf?ln=bsf" /> 
<!--[if lt IE 9]><script src="/installateurportal/javax.faces.resource/js/html5shiv.js.jsf?ln=bsf"></script><script src="/installateurportal/javax.faces.resource/js/respond.js.jsf?ln=bsf"></script><![endif]--> 
<script type="text/javascript" src="/installateurportal/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces&amp;v=6.0"></script> 
<script type="text/javascript" src="/installateurportal/javax.faces.resource/jquery/jquery-plugins.js.jsf?ln=primefaces&amp;v=6.0"></script> 
<script type="text/javascript" src="/installateurportal/javax.faces.resource/core.js.jsf?ln=primefaces&amp;v=6.0"></script> 
... 

На странице есть кнопки, как

<h:commandLink styleClass="btn btn-mini btn-default" 
    actionListener="#{testController['filterTable']}"> 
    <i class="fa fa-refresh"/> 
</h:commandLink>      

После нажатия на одну из них страницы снова загружен с ошибками в JS-консоли, как

Uncaught ReferenceError: jQuery is not defined 
    at tbmDisposition-aendernPF.jsf:3 
VM219 jquery-plugins.js.jsf?ln=primefaces&v=6.0:5 Uncaught ReferenceError: jQuery is not defined 
    at VM219 jquery-plugins.js.jsf?ln=primefaces&v=6.0:5 
    at VM219 jquery-plugins.js.jsf?ln=primefaces&v=6.0:5 

И когда смотришь на сгенерированный HTML:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"><head id="j_idt2"> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/theme.css.jsf?ln=primefaces-aristo" /> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/css/default/core.css.jsf?ln=bsf" /> 
<link type="text/css" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" /> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/css/bsf.css.jsf?ln=bsf" /> 
<!--[if lt IE 9]><script src="/installateurportal/javax.faces.resource/js/html5shiv.js.jsf?ln=bsf"></script><script src="/installateurportal/javax.faces.resource/js/respond.js.jsf?ln=bsf"></script><![endif]--> 
<link type="text/css" rel="stylesheet" href="/installateurportal/javax.faces.resource/components.css.jsf?ln=primefaces&amp;v=6.0" /> 
<script type="text/javascript" src="/installateurportal/javax.faces.resource/jquery/jquery-plugins.js.jsf?ln=primefaces&amp;v=6.0"></script> 
<script type="text/javascript" src="/installateurportal/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces&amp;v=6.0"></script> 
<script type="text/javascript" src="/installateurportal/javax.faces.resource/core.js.jsf?ln=primefaces&amp;v=6.0"></script> 
... 

Вы можете видеть, что JQuery-плагинов является выше JQuery, которая вызывает описанную ошибку.

Конечно, я пробовал различные альтернативы в разделе головы без успеха, поэтому любая помощь будет оценена по достоинству.

информация Версия

PrimeFacs: 6,0

JSF: 1.2_15-jbossorg-2

Сервер: jboss-as-7.1.2.Final

Привет Кай

Обновление: Отладка HeadRenderer Я нашел что HeadRenderer, похоже, не несет ответственности за JQuery. Это должно иметь какое-то отношение к ResourceDependencies виджета и тому, как они отображаются. Кто-нибудь знает, какой рендер может нести ответственность за ResourceDependencies?

Обновление 2: Кроме того, я использую BootsFaces для макета. Теперь я узнал, что BootsFaces имеет свой собственный JQuery и ресурсов оптимизации, а также ...

Update 3: В ResourceFileComparator из BootsFaces файлов JS будет переименован как

if (name.contains("jquery-ui")) name = "2.js"; // make it the second JS file 
else if (name.contains("jquery")) name = "1.js"; // make it the first JS file 

Но в моем случае имя jquery-ui: «jquery/jquery-plugins.js» => Оба «jquery/jquery.js» и «jquery/jquery-plugins.js» будут переименованы в «1.js»

+0

Вы уверены, что используете JSF 1.2? Лично я не добавляю файлы, которые мне нужны, в фасеты, потому что я всегда не уверен на 100%, где они будут, я бы положил их на нижнюю часть вручную и дождался, чтобы увидеть, когда он делает автоматическую инъекцию.Кроме того, вы можете отключить темы PrimeFaces и т. Д. И сделать все сами. – VeenarM

+0

Зависимость от maven 1.2_15-jbossorg-2 Но это JSF 2.1. Как я могу сделать все это сам? –

ответ

Смежные вопросы