2017-02-22 101 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。 它必須與Widget的ResourceDependencies以及它們如何呈現有關。 有誰知道哪個渲染器可能負責ResourceDependencies?

更新2: 除了我使用BootsFaces的佈局。現在我才知道,BootsFaces都有自己的jQuery和資源優化,以及...

更新3: 在BootsFaces的ResourceFileComparator的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是否自動注入。或者,您可以關閉PrimeFaces主題等,自己完成。 – VeenarM

+0

maven依賴說 1.2_15-jbossorg-2 但它是JSF 2.1。 我該如何做到這一切呢? –

回答