2013-07-23 24 views
0

我正面臨一個非常奇怪的問題。我正在使用jsf 1.2和richfaces 3.3.3構建一個Web應用程序。我沒有加載任何外部的jQuery版本,而是堅持由豐富的面孔提供的默認版本,即jquery版本1.3.2。我使用'jQuery'關鍵字訪問默認的jquery。默認Richfaces未在頁面中加載Jquery

我在我的頁面頂部包含了一些JavaScript文件,其中包含jquery。 當我從該頁面中刪除所有richfaces組件時,它看起來像jquery沒有加載。這是在控制檯上,我看到消息'jQuery是未定義的'。但是當我在頁面中包含「rich:extendedDataTable」標記時,此錯誤消失。奇怪的是,如果我包含'rich:dataTable',錯誤仍然存​​在。它看起來只有當我使用'rich:extendedDataTable'時,jQuery才加載到我的頁面中。所以我現在所做的是在頁面上放置一個'rich:extendedDataTable'來表示原因,並且渲染爲'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是沒有定義

這到底是怎麼發生的? Wy看起來像只有當我包含一個特定的豐富組件時才加載jquery。如何使jQuery在我的apge bby默認情況下可用,即使在該頁面中沒有加載豐富的組件

回答

5

僅當RichFaces自身需要時才爲JQuery添加導入。即使您沒有使用任何使用JQuery的RichFaces組件,也必須強制RichFaces加載JQuery。

您可以通過編寫此強制JQuery的進口:

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

如果你搜索這個代碼,你會發現很多的例子。

+0

嗯..這樣做... ...非常感謝..從來沒有發佈,我可以強制richfaces加載jquery到這種方式的頁面..你救了我很多時間.. – user2317577