2010-01-11 6 views
16

J'ai quelques bibliothèques Javascript qui font de jolies photos de mes pages HTML et je veux les inclure dans mes pages gsp, en particulier la page de destination de mon application. J'ai essayé de les mettre dans le dossier views et web-app/js et $APP_HOME/scripts mais quand je charge mon index.gsp les manuscrits n'apparaissent pas.Où dois-je mettre les bibliothèques javascript dans une application Grails?

J'ai aussi essayé une variété de solutions de rechange dans mon code dont aucun travail ...

<script src="mylib.js" type="text/javascript"></script> 
<script src="js/mylib.js" type="text/javascript"></script> 
<script src="scripts/mylib.js" type="text/javascript"></script> 

Je suis sûr qu'il ya un moyen de Grails intelligent de le faire à la volée, mais je vraiment juste Je veux un endroit où je peux placer du code JavaScript que je peux utiliser dans mon application. Avec la convention sur la configuration en tête, quelle est la pratique attendue?

Répondre

12

Avec votre fichier JS à: web-app/js/myLib.js, mettre <g:javascript library="myLib" /> dans votre mise en page si je pense que ce soit ce dont vous avez besoin.

+6

voir ci-dessous: c'est faux. est correct. –

+5

Vous avez oublié js ici @ RickMangi. La bonne façon est: '' – chelder

+0

Que se passe-t-il lorsque vous créez et déployez votre application? Est-ce que le JavaScript est automatiquement emballé ??? – RPDeshaies

0

Je pense avoir trouvé la réponse ...

Si j'utilise cette balise dans ma gsp (plutôt qu'une référence simple javascript)

<g:javascript library="mylib" />  

Puis, quand je regarde la source de la page générée il se réfère à

<script type="text/javascript" src="/myapp/js/mylib.js"></script> 

Cela correspond au dossier web-app/js, donc je laissai tomber là-dedans ma bibliothèque de scripts et il fonctionne très bien. La percée a été pour moi de a) renommer mon index.html en index.gsp et b) utiliser la balise g:javascript.

+0

yep exactement - je besoin de taper plus rapidement :) –

+0

publier la même réponse et Je vais vous upvote! – Simon

+0

tirer, vous tapez rapidement – Simon

22

Vous ne devriez probablement PAS utiliser <g:javascript library="myLib" /> car il est destiné à être utilisé pour rendre indifférente la bibliothèque d'appels AJAX (scriptaculous, dojo, yahoo, jquery). Voir grails javascript. Utilisez plutôt <g:javascript src="myLib.js" />.

+0

Ceci devrait être marqué comme réponse correcte. –

0

Utilisez <g:javascript src="myscript.js" /> et placez votre script dans web-app/js/myscript.js

Pour le détail complet et des exemples pour les deux vos propres scripts externes, le code en ligne et les bibliothèques voir http://grails.org/doc/latest/ref/Tags/javascript.html.

+0

Qu'en est-il dans les grails 3? –

1

Il y a deux façons dont vous pouvez inclure le fichier JS et bibliothèque JS comme scriptaculous

// actually imports '/app/js/myscript.js' 
<g:javascript src="myscript.js" /> 

// imports all the necessary js for the scriptaculous library 
<g:javascript library="scriptaculous" /> 

<g:javascript>alert('hello')</g:javascript> 

Reportez-vous: http://grails.org/doc/latest/ref/Tags/javascript.html

Questions connexes