J'ai un projet Grails 2.0.0 créé à l'aide de grails create-app
. Dans mes fichiers HTML et GSP, j'essaie d'inclure jquery.js
. J'ai essayé tout ce qui suit sans succès:
<script type="text/javascript" src="jquery/jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery/jquery.js"></script>
<g:javascript library="jquery"/>
Les deux premières balises <script>
donnent 404 Not Found (vérifié avec Firebug). La balise <g:javascript>
ne contient aucune information (vérifiée à l'aide de View Source).
Sur la page d'accueil de mon application Grails, cela indique que jquery 1.7.1 est installé (sous "INSTALLED PLUGINS").
Quelle est la méthode correcte dans Grails pour inclure le fichier jquery .js?
Suivi: Le fichier .GSP:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Test</title>
<g:javascript library="jquery/jquery"/>
</head>
<body>
<h1>Test</h1>
</body>
</html>
Résultats dans la source HTML suivante:
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Test</h1>
</body>
</html>
Notez l'absence de jquery.js.
Suivi 2:
Je crée mon application en utilisant grails create-app
:
13:56:40 ~/grailsDev $ grails create-app helloworld
| Created Grails Application at /Users/steve/grailsDev/helloworld
13:56:57 ~/grailsDev $ cd helloworld/
13:57:06 ~/grailsDev/helloworld $ ls -al web-app/js
total 8
drwxr-xr-x 3 steve staff 102 Jan 21 13:56 .
drwxr-xr-x 7 steve staff 238 Dec 15 08:04 ..
-rw-r--r-- 1 steve staff 183 Dec 14 22:56 application.js
13:57:23 ~/grailsDev/helloworld $ grails -version
Grails version: 2.0.0
Apparemment, <r:layoutResources/>
doit être inclus dans <head>
(après <q:javascript library='jquery' />
). Ce qui suit fonctionne réellement:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Simple GSP page</title>
<g:javascript library='jquery' />
<r:layoutResources/>
</head>
<body>
Place your content here
</body>
</html>
Le plugin jquery est installé par défaut en 2.0 - voir grails-app/conf/BuildConfig.groovy
. Pour utiliser jquery.js dans un SPG, ajoutez simplement cette ligne:
<g:javascript library='jquery' />
Steve après l'installation du plugin Jquery via grails install-plugin jquery, vous devez exécuter une autre commande grails pour télécharger le fichier jquery dans votre application.
grails installJQuery
Cette cible télécharge et installe jquery-1.7.1.js et jquery-1.7.1.min.js sous web-app/js/jquery /
Selon la documentation actuelle - http://grails.org/plugin/jquery (version de Grails: 1.3> *) du 18 septembre 2015
Pour installer le plug-in jQuery, tapez cette commande dans le dossier racine de votre projet:
grails install-plugin jquery
grails installJQuery
La distribution complète de jQuery est téléchargée et installée dans le dossier/web-app/js/jQuery de votre projet.
Pour que le support adaptatif AJAX de Grails s'adapte à jQuery (plutôt qu'à la valeur par défaut de Prototype ou à un autre choix comme YUI ou Dojo):
Ajouter cette ligne à votre fichier de mise en page
<g:javascript library="jquery" plugin="jquery"/>
et les suivants à votre grails-app/conf/config.groovy
grails.views.javascript.library="jquery"
alternativement, vous pouvez utiliser:
<g:javascript library="jquery" />
(sans plugin = "jquery") mais vous devrez appeler la cible grails installJQuery (voir Onglet Installation)
Dans Grails 2.x, vous pouvez aussi faire:
grails.resources.modules = {
core {
dependsOn 'jquery, jquery-ui'
}
}
dans Config.groovy
Ensuite, dans votre système de préférences généralisées, placez simplement ce qui suit dans votre élément HEAD
:
<r:require module="core"/>
L'avantage est que vous pouvez spécifier d'autres fichiers CSS/JS sur lesquels vous pouvez compter, ce qui en fait une option propre et nette dans le SGP. C'est également à cet endroit que vous pouvez remplacer les versions de jQuery/jQuery-UI.
J'ai vu un bon tutoriel à ce sujet dans icodeya. http://www.icodeya.com/2012/09/grails-different-ways-to-import.html
vous pouvez le faire dans votre gsp:
<g:javascript src="myscript.js"/ >
OUvous pouvez le faire dans votre Config.groovy:
grails.resources.modules = {
core{
resource url:'/js/jQuery.js'
}
myScript {
resource url:'/js/myScript.js'
dependsOn 'core'
}
}
alors, dans votre gsp, vous pouvez attacher ceci:
<r:require module="myScript" />
Mise à jour pour Grails 2.3 Ceci pourrait aider à résoudre la configuration de jQuery afin qu’elle soit disponible à partir de vos pages gsp.
install-plugin jquery
, le message obsolète 'install-plugin' échouera: Donc, le plus probablement, vous l'avez déjà configuré dans votre BuildConfig.groovy comme ceci (notez que c'est runtime, pas compilé):
plugins {
// ... some other plugins here ...
runtime ":jquery:1:11:1"
}
Si vous utilisez Eclipse, faites un Fichier , recherchez jquery et voyez si vous avez déjà les fichiers:
Confirmez que votre répertoire js
n'est pas vide, il se trouve dans le répertoire web-app
. Si js
ne contient aucun fichier ou répertoire, copiez-le simplement de ce que vous avez entré à l'étape 2:
Comme mentionné précédemment, la combinaison de ces deux lignes semble fonctionner (en haut de vos pages gsp):
Si jQuery n'est pas la toute première bibliothèque javascript à charger, vous risquez d'avoir des problèmes. Vérifiez votre fichier layouts/main.gsp
si vous en avez un. Vous devrez peut-être ajouter jquery à toutes vos pages pour que ce soit tout en haut de votre source HTML.
J'espère que cela pourra aider.
Remarque: Au moment de cette publication (avril 2015), Grails 3.0 a été publié et il semble être incompatible avec les projets Grails 2.X dans leur configuration. Espérons que cela sera mieux documenté pour éviter les problèmes avec 2.X.
Actuellement, en 2015, tout ce que vous avez à faire est d’ajouter runtime ":jquery:1.11.1"
à votre BuildConfig.groovy et c’est tout.
<g:javascript library="jquery/jquery"/>
J'ai découvert (à partir de la page du plug-in JQuery) qu'en plus d'utiliser la balise <g:javascript library="jquery"/>
, je devais ajouter explicitement le libellé du plug-in pour que la balise ressemble à ceci:
<g:javascript library="jquery" plugin="jquery"/>
Avez-vous une idée de la raison pour laquelle je devais utiliser la propriété plugin?