0

我正面临一个非常奇怪的问题。我正在使用 jsf 1.2 和 richfaces 3.3.3 构建一个 Web 应用程序。我没有加载任何外部jquery 版本,而是坚持使用富面孔提供的默认版本,即jquery 版本1.3.2。我使用“jQuery”关键字访问默认 jquery。

我在页面顶部包含了一些 javascript 文件,其中包含 jquery。当我从该页面中删除所有richfaces 组件时,看起来jquery 没有加载。那是在控制台上,我看到消息'jQuery 未定义'。但是当我在我的页面中包含“rich:extendedDataTable”标签时,这个错误就消失了。奇怪的是,如果我包含'rich:dataTable',错误仍然存​​在。看起来只有当我使用'rich:extendedDataTable'时才在我的页面中加载jQuery。所以我现在要做的是在那个页面上放一个'rich:extendedDataTable',因为mo原因,渲染为'False'。我不确定这有什么意义。

jsf 包含在页面顶部

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
                            xmlns:h="http://java.sun.com/jsf/html"
                            xmlns:f="http://java.sun.com/jsf/core"
                            xmlns:a4j="http://richfaces.org/a4j"
                            xmlns:rich="http://richfaces.org/rich"
                            xmlns:t="http://myfaces.apache.org/tomahawk"
                            xmlns:ui="http://java.sun.com/jsf/facelets">    
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <link href="../../styles/bootstrap.min.css" rel="stylesheet" type="text/css" />
        <link href="../../styles/Stylesheet.css" rel="stylesheet" type="text/css" />
        <script src ="first.js" language="JavaScript"/>
        <script src ="second.js" language="JavaScript"/>
        <script src ="validation.js" language="JavaScript"/>    

在控制台上看到的错误是 ReferenceError: jQuery is not defined

这里发生了什么?看起来只有当我包含特定的丰富组件时才加载 jquery。即使该页面中没有加载丰富的组件,如何使我的 apge bby 默认使用 jQuery

4

1 回答 1

5

RichFaces 仅在需要时才为 JQuery 添加导入。即使您不使用任何使用 JQuery 的 RichFaces 组件,您也必须强制 RichFaces 加载 JQuery。

您可以通过编写以下代码来强制导入 JQuery:

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

如果您搜索此代码,您会发现很多示例。

于 2013-07-23T19:29:10.897 回答