2012-02-01 2 views
15

Я хочу использовать плагин jQuery Validate с JSF для проверки на стороне клиента. Я нахожу основную трудность в импорте ресурсов.Как включить файлы JavaScript по h: outputScript?

В моей странице 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, я не могу видеть, какие файлы сценария в раскрывающемся списке. Появляется сообщение:

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

Futher my jquery effect, как наведение курсора мыши, скрыть, показать и т.д. не работают. Я пробовал с обычными сценариями тегов

<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, но успеха не имел.

Просьба предложить мне решение этой проблемы. Я не хочу использовать встроенную проверку JSF с ajax, потому что мы перенесли код из 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, изображения и т. Д. Только в ресурсах? Является ли это структурой std-папки, установленной в netbeans? – enthusiastic

+0

Вот что говорит документация, да. Нет, это абсолютно не связано с Netbeans. Это просто инструмент. – BalusC

+0

@BalusC Вы говорите, что вы опустили атрибут библиотеки, потому что он не указывает реальную библиотеку. Что ты конкретно имеешь ввиду? Какие имена можно использовать? Не соответствует ли библиотеке имя папки под ресурсами? – user579674

Смежные вопросы