2012-02-01 15 views
15

Chcę użyć wtyczki walidacji jQuery Validate z JSF do sprawdzania poprawności formularza po stronie klienta. Znajduję podstawową trudność w importowaniu zasobów.Jak dołączyć pliki JavaScript przez h: outputScript?

W mojej stronie JSF mam

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

Po kliknięciu na zakładkę skryptu w Firefoksie, nie widzę żadnych plików skryptów w rozwijanym. Wyświetlany jest komunikat:

Jeśli tagi mają atrybut "type", powinien być równy "text/javascript" lub "application/javascript". Również skrypty muszą być parsable (poprawne pod względem składni).

W przyszłości efekt jquery, taki jak najechanie myszą, ukrywanie, pokaz itp., Nie działa. Próbowałem ze zwykłymi znacznikami skryptu:

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

To było bezużyteczne. Nadal nie był w stanie zlokalizować moich plików JS. Wszystkie moje pliki JS są umieszczone pod

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

Próbowałem jednego z rozwiązań zamieszczonych w Using jQuery with JSF 2.0's resource ale nie miał powodzenia.

Uprzejmie proszę o zaproponowanie mi rozwiązania. Nie chcę używać wbudowanego sprawdzania poprawności JSF z ajaxem, ponieważ przenieśliśmy kod z JSP do JSF i sprawdzanie poprawności jest już napisane. Chcę ponownie użyć istniejącej wersji jQuery Validation, którą wcześniej napisałem.

Odpowiedz

27

<h:outputScript> (i <h:outputStylesheet>) ładuje zasoby z folderu /resources. Musisz umieścić skrypty w tym folderze.

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

Wtedy następujące deklaracje skrypt powinien działać:

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

(zauważ, że pominięto atrybut library, ponieważ nazwa "js" nie oznacza real library)

Że Twoje podejście <script> nie powiodło się prawdopodobnie spowodowane nieprawidłową ścieżką względną. Musisz zdać sobie sprawę, że zasoby są rozwiązywane w odniesieniu do bieżącego adresu URL żądania, a nie do ich ścieżki w systemie plików dysku po stronie serwera.

+0

@ BalusC - Więc automatycznie wygląda w folderze zasobów? Jeśli tak, to znaczy, że muszę umieścić moje treści internetowe --- css, obrazy itp. Tylko w zasobach? Czy jest to struktura std ustawiona w netbeans? – enthusiastic

+0

Tak mówi dokumentacja. Nie, nie ma to związku z Netbeans. To tylko narzędzie. – BalusC

+0

@ BalusC Mówisz, że pominąłeś atrybut biblioteki, ponieważ nie wskazuje on prawdziwej biblioteki. Co miałeś dokładnie na myśli? Jakich nazw można używać? Czy biblioteka nie odpowiada nazwie folderu w zasobach? – user579674

Powiązane problemy