web-dev-qa-db-ja.com

h:outputScriptでJavaScriptファイルを含める方法は?

クライアント側のフォーム検証のために、JSFでjQuery Validateプラグインを使用したいと思います。リソースのインポートに基本的な困難を感じています。

私の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

JSF 2.0のリソースでjQueryを使用する に投稿されたソリューションの1つを試しましたが、成功しませんでした。

親切に私にこれに対する解決策を提案してください。コードをJSPからJSFに移動し、検証がすでに記述されているため、ajaxでJSF組み込み検証を使用したくありません。以前に書いた既存のjQuery Validationを再利用したいと思います。

16
enthusiastic

<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" />

(「js」という名前は 実際のライブラリ を示していないため、library属性を省略したことに注意してください==)

<script>アプローチが失敗したのは、誤った相対パスを使用したことが原因と考えられます。リソースは、サーバー側のディスクファイルシステム内のパスではなく、現在の要求URLに関連して解決されることを理解する必要があります。

30
BalusC