哪些RichFaces组件使用原型,哪些使用jquery?

时间:2010-11-09 18:57:39

标签: jquery jsf richfaces prototypejs

我正在尝试从我的RichFaces项目删除 jquery和原型以及Scriptaculous。我不想在那里使用这些库,因为我想在这个项目中使用最新版本的jQuery,并且拥有这些库的3个旧版本会让它变得困难。

我无法在网上找到任何说明 RichFaces 的哪些部分需要这些库的文档。事实上,对我来说似乎有点疯狂,他们决定在那里包含原型和jquery。

3 个答案:

答案 0 :(得分: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捆绑在一起

答案 1 :(得分:3)

有点疯狂。我不确定Richfaces 4中是否有所改变,但以下情况适用于3.x。

  • Prototype用于核心Ajax 所以你无法摆脱它。
  • Scripatculous用于 rich:effect
  • jQuery用于组件 日期选择器。

然而,您可以升级这些版本并使用您自己的版本,前提是您在web.xml中使用NONE的LoadScriptStrategy并手动将脚本加载到您的页面中。

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

答案 2 :(得分:2)

Richfaces 3.x为richfaces-ui.jar / META-INF / rich.component-dependencies中的每个组件定义了脚本依赖项。不幸的是,大多数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/form.js

您可以在自定义文件中将它们放在一起,以避免Richfaces单独加载它们。如果要使用自定义脚本,则需要将web.xml中的context-param org.richfaces.LoadScriptStrategy设置为NONE。

如果您想使用UI控件,那么您可能最终必须同时拥有jQuery和原型。但是,您可以将基础jQuery升级到1.4.3。为此,您需要查看Richfaces对jQuery.js进行的调整,并重新应用于更高版本的jQuery。

Richfaces 4应该是一个更清洁的实现。我希望如此!