2010-11-09 31 views
9

我正在嘗試刪除 jQuery的原型和Scriptaculous從我的RichFaces項目。我不希望那些庫在那裏,因爲我想在這個項目中使用jQuery的最新版本,並且有3個這些庫的舊版本使它很難。哪個RichFaces組件使用原型,它使用jquery?

我無法找到任何文件在線,說RichFaces哪些部分需要這些庫。事實上,它似乎瘋狂對我來說,他們決定在那裏包括原型和jquery。

回答

6

如果您使用RichFaces的3.1.X你可以在你的web.xml文件中添加此

<context-param> 
    <param-name>org.richfaces.ExcludeScripts</param-name> 
    <param-value>Prototype,Scriptaculous,JQuery</param-value> 
</context-param> 

然而,這不會在以後的版本。更多信息here

如果你想在你自己的代碼中使用最新的jQuery,看看this blog post我寫了解釋你如何使用你自己的jQuery版本沒有衝突。

的基本想法是,你必須使用jQuery.noConflict(); 您可以分配給你的自己的選擇,即:$j = jQuery.noConflict();

然後你可以自由地使用自己的jQuery版本,而不會影響隨RichFaces的版本。

function showMessages() { 
    $j("div#messagetextPanel").fadeIn("fast"); 
} 

RichFaces的4.x的捆綁與jQuery 1.4

3

這有點瘋狂。我不確定這是否在Richfaces 4中發生了變化,但以下情況適用於3.x.

  • 原型用於核心Ajax 所以你不能擺脫這一點。
  • Scripatculous用於 rich:effect
  • jQuery用於組件如 日期選擇器。

您但是可以升級的這些版本,並使用自己的,只要您使用NONE的LoadScriptStrategy在web.xml和手動加載腳本到您的網頁。

<context-param> 
    <param-name>org.richfaces.LoadScriptStrategy</param-name> 
    <param-value>NONE</param-value> 
</context-param> 
+2

JQuery 1.4不會自動向後兼容1.3。所以我不會這樣做,如果我在哪裏你 – 2010-11-10 10:28:34

2

RichFaces的3.X限定用於在RichFaces的-ui.jar/META-INF/rich.component依賴性每個組件腳本的依賴關係。不幸的是,大多數Richfaces UI組件都依賴於jQuery和Prototype。

基本的ajax功能(來自ajax4jsf)非常乾淨,不依賴於jQuery或Prototype。因此,要獲得Ajax支持工作,你只需要以下條件:

  • /a4j/g/3_3_1.GAorg.ajax4jsf.javascript.AjaxScript
  • /a4j/g/3_3_1.GAorg/ajax4jsf/javascript/scripts/形成。js

您可以將它們放在一個自定義文件中,以避免讓它們由Richfaces單獨加載。如果您想使用自定義腳本,則需要將web.xml中的context-param org.richfaces.LoadScriptStrategy設置爲NONE。

如果您想要使用UI控件,那麼您可能最終不得不同時擁有jQuery和原型。但是,您可以將基礎jQuery升級到1.4.3。爲此,您需要查看Richfaces對jQuery.js所做的調整,然後重新應用到jQuery的更高版本。

Richfaces 4應該是一個更清潔的實現。但願如此!