Как включить файлы JavaScript по h: outputScript?

Я хочу использовать плагин jQuery Validate с JSF для проверки формы на стороне клиента. Я затрудняюсь импортировать ресурсы.

На моей странице 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>

Когда я нажимаю вкладку script в Firefox, я не вижу никаких файлов script в раскрывающемся списке. Появится сообщение:

Если теги имеют атрибут типа, он должен быть равен "text/javascript" или "application/javascript". Также скрипты должны быть синтаксически корректными.

Теперь мой jquery-эффект, как наведение курсора мыши, скрыть, показать и т.д., не работает. Я пробовал с обычными тегами script

<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

Я попробовал одно из решений, опубликованное в Использование jQuery с ресурсом JSF 2.0, но не получило успеха.

Просьба предложить мне решение для этого. Я не хочу использовать встроенную проверку JSF с ajax, потому что мы перенесли код из JSP в JSF, и проверка уже написана. Я хочу повторно использовать существующую проверку jQuery, которую я ранее написал.

Ответы

Ответ 1

<h:outputScript><h:outputStylesheet>) загружает ресурсы из папки /resources. Вам нужно поместить скрипты в эту папку.

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

Затем должны работать следующие объявления script:

<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" не указывает реальную библиотеку)

То, что ваш сбой <script> не удалось, возможно, вызвано неправильным относительным путем. Вам нужно понять, что ресурсы разрешены относительно текущего URL-адреса запроса, а не их пути в файловой системе на стороне сервера.