【问题标题】:How to enforce loading of jQuery in RichFaces?如何在 RichFaces 中强制加载 jQuery?
【发布时间】:2013-09-06 10:07:10
【问题描述】:

我在我的页面上使用 jQuery。但是,我不会在每个页面上都使用 RichFaces 标记。随后,RF 不会在每个页面中注入 jQuery。为了避免加载额外的 jQuery 库,如何正确指示 RichFaces 加载其 jQuery 自己的库?

这是一个问题,因为 RF-jQuery 库会覆盖我加载的自定义 jQuery。此外,RF-jQuery 库总是最后加载的库,这也不好,因为我需要 jquery-ui.jsjquery-migrate-1.2.1.min.js 在加载 jQuery 库后加载。

<head>
    <!-- JS -->
    <span id="out">
        Richfaces-jQuery enforce with a4j:outputPanel
    </span>

    <script src="/ccms/resources/js/jquery-ui.js"></script>
    <script src="/ccms/resources/js/jquery-migrate-1.2.1.min.js"></script>

    <!-- The CK editor -->
    <script src="/ccms/resources/ckeditor_4_2_custom/ckeditor.js"></script>
    <script src="/ccms/resources/js/jquery.capty.min.js"></script>

    <!-- &lt;ui:debug hotkey=&quot;x&quot; /&gt; -->
    <script type="text/javascript" src="/ccms/javax.faces.resource/jsf.js.jsf?ln=javax.faces&amp;stage=Development"></script>
    <script type="text/javascript" src="/ccms/org.richfaces.resources/javax.faces.resource/org.richfaces.staticResource/4.3.3.Final/Packed/jquery.js"></script>
    <script type="text/javascript" src="/ccms/org.richfaces.resources/javax.faces.resource/org.richfaces.staticResource/4.3.3.Final/Packed/packed/packed.js"></script>
    <link type="text/css" rel="stylesheet" href="/ccms/org.richfaces.resources/javax.faces.resource/org.richfaces.staticResource/4.3.3.Final/Packed/DEFAULT/packed/packed.css" />
</head>

【问题讨论】:

    标签: jquery jsf richfaces


    【解决方案1】:

    RichFaces 4.5 最终将他们的 JavaScript 代码放入了一个库中,因此要包含他们的 jQuery 副本,您需要使用

    <h:outputScript name="jquery.js" library="org.richfaces" />
    

    【讨论】:

      【解决方案2】:

      如果您的 h:outputScript 指令不在 h:head 内,请添加 target="head" 参数以确保该库仅包含一次:

      <h:outputScript name="jquery.js" target="head"/>
      

      【讨论】:

      • 嗨,Andrey,它可用。 RF的优先加载是需要克服的问题。不过没关系,我继续说。
      【解决方案3】:

      RichFaces 4.x 捆绑的 jQuery 可用如下:

      <h:outputScript name="jquery.js" />
      

      是的,令人惊讶的是没有任何library

      您只需确保使用&lt;h:head&gt; 而不是&lt;head&gt;。我也强烈建议您也通过&lt;h:outputScript&gt; 加载您自己的 JS 资源。

      【讨论】:

        【解决方案4】:

        你可以通过添加这个来强制加载 JQuery(适用于 RichFaces 3.x):

        <a4j:loadScript src="resource://jquery.js" />
        

        对于 RichFaces 4.x,请参阅此主题:RichFaces 4 replacement for <a4j:loadScript>

        【讨论】:

        • 感谢@LaurentG。但是那个标签既不在我的标签完成中,也没有在文档中描述:docs.jboss.org/richfaces/latest_4_3_X/Component_Reference/en-US/…我希望是这样。
        • 抱歉,我的解决方案适用于 Richfaces 3.x。我更新了答案。
        • 现在它被加载了两次。一次是我的指导,一次是富人。我离开了这条路。我现在使用两个 jQuery 实例进行操作。使用 var jq10 = jQuery.noConflict(true); 将主要加载的 jquery 库放入分配的 var(在我的情况下为 jq10)。如果您只需要一个,那么加载两个库仍然不是最佳选择。但是,不能在这里浪费时间。
        猜你喜欢
        • 1970-01-01
        • 2013-07-23
        • 2011-02-17
        • 2013-07-29
        • 2011-12-12
        • 2017-08-30
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多