2010-11-09 25 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应该是一个更清洁的实现。但愿如此!