2012-02-01 95 views
15

我想用jQuery Validate插件和JSF進行客戶端表單驗證。我發現導入資源存在基本困難。如何通過h:outputScript包含JavaScript文件?

在我的JSF頁面我有

<h:outputScript library="js" name="jquery-1.6.2.js"></h:outputScript> 
<h:outputScript library="js" name="jquery.validate.js"></h:outputScript> 
<h:outputScript library="js" name="jquery.maskedinput.js"></h:outputScript> 
<h:outputScript library="js" name="myapp.validate.js"></h:outputScript> 

當我點擊Firefox瀏覽器的腳本選項卡上,我看不到在下拉任何腳本文件。有一條消息顯示:

如果標籤具有「type」屬性,它應該等於「text/javascript」或「application/javascript」。另外腳本必須是可解析的(語法正確)。

進一步我的jquery效果像鼠標懸停,隱藏,顯示等不起作用。我試着用通常的腳本標記

<script type="text/javascript" src="../js/jquery-1.6.2.js"></script> 
<script type="text/javascript" src="../js/jquery.validate.js"></script> 
<script type="text/javascript" src="../js/jquery.maskedinput.js"></script> 
<script type="text/javascript" src="../js/myapp.validate.js"></script> 

哪個沒用。仍然無法找到我的JS文件。我所有的JS文件都放在

Web pages 
     |_ js 
      |_jquery-1.6.2.js,my.validate.js,jquery.validate.js,jquery.maskedinput.js 

下我試過張貼在Using jQuery with JSF 2.0's resource的解決方案之一,但沒有成功。

請給我一個解決方案。我不想用ajax來使用JSF內置驗證,因爲我們將代碼從JSP移到了JSF,並且驗證已經寫好了。我想重用我以前編寫的現有jQuery驗證。

回答

27

<h:outputScript>(和<h:outputStylesheet>)從/resources文件夾加載資源。您需要將腳本放入該文件夾中。

WebContent 
|-- resources 
| `-- js 
|  |-- jquery-1.6.2.js 
|  |-- myapp.validate.js 
|  |-- jquery.validate.js 
|  `-- jquery.maskedinput.js 
|-- WEB-INF 
: 

然後將下面的腳本聲明應該工作:

<h:outputScript name="js/jquery-1.6.2.js" /> 
<h:outputScript name="js/jquery.validate.js" /> 
<h:outputScript name="js/jquery.maskedinput.js" /> 
<h:outputScript name="js/myapp.validate.js" /> 

(注意,我省略了library屬性,因爲名稱 「JS」 並不表示real library

那您的<script>方法失敗可能是由於使用不正確的相對路徑造成的。您需要認識到,相對於當前請求URL而不是其在服務器端磁盤文件系統中的路徑解析資源。

+0

@ BalusC-所以它會自動查找資源文件夾下?如果是這樣,這意味着我必須把我的網頁內容--- CSS,圖像等只在資源下???這是一個在NetBeans中設置的std文件夾結構嗎? – enthusiastic 2012-02-02 05:57:32

+0

這就是文檔所說的,是的。不,這與Netbeans完全無關。這只是一個工具。 – BalusC 2012-02-02 12:04:13

+0

@BalusC你說你省略了庫屬性,因爲它並不表示一個真正的庫。你究竟是什麼意思?什麼樣的名字可以使用?庫不對應於資源下文件夾的名稱? – user579674 2012-08-12 10:59:45