2009-10-30 11 views
4

J'ai essayé avec NetBeans et Eclipse, avec pas de chance ... (essayer coudn't idée IntelliJ)comment déboguer une page gsp? (Pas Grails, juste gsp)

je lui ai donné une fourmi rapide coup d'oeil le code

http://kickjava.com/src/groovy/servlet/TemplateServlet.java.htm

et il me donne l'impression que .gsp pages sont traduites en .groovy servlets (groovlets) dans la mémoire (je peux me tromper) ...

donc peut-être il est pas si facile à déboguer gsp que je pensais. ..

alors, quelqu'un peut-il me dire comment le faire?

pd: Par débogage, je veux dire, par exemple, parcourir le code étape par étape, inspecter des variables, ajouter des montres et tout ce genre de choses, évidemment. Pas la (pas si) bonne vieille approche printf ...

Répondre

6

La plupart de la logique dans vos GSP devrait être encapsulée dans TagLibs, et vous pouvez les déboguer (avec IntelliJ au moins), aussi facilement que n'importe quel autre code Groovy .

Si vous avez beaucoup de code de script dans vos GSP (ce que vous ne devriez pas), et que vous voulez le déboguer, vous ne pouvez pas faire beaucoup plus de println. Une autre possibilité consiste à afficher la source du code Groovy généré pour votre GSP. Cela peut être fait en ajoutant un paramètre showSource à l'URL, comme décrit here.

+0

bon point sur le tag libs, n'avait aucune idée qu'ils pourraient être débogués ... – opensas

3

J'utilise un hack: ajouter une méthode à un contrôleur, comme static def debugme(def param) { def a = param }, et l'appeler à partir du code gsp: <% ThisController.debugme(this) %> ou <% ThisController.debugme(params) %>

(vous ne savez que vous ne devez pas redémarrer l'application après la modification d'un contrôleur ou vue, droite?)

Je ne pense pas non plus que toute la logique devrait être dans taglibs: la logique spécifique à la page devrait être clairement visible dans un contrôleur ou une vue. Nous avons la plupart de la logique dans les contrôleurs ou les classes de domaine.

2

Ajoutez un paramètre à Config.groovy et les fichiers gsp générés seront écrits dans un répertoire: grails.views.gsp.keepgenerateddir = '/ some/existing/directory' (le répertoire cible doit exister et être inscriptible)

Plus d'informations: http://jira.codehaus.org/browse/GRAILS-4422

Il devrait être possible de déboguer le code groovy généré avec un débogueur Java standard. C'était il ya longtemps quand je l'ai fait (quand j'ai créé le patch pour grails) et je pense que j'ai utilisé jswat (http://code.google.com/p/jswat/) pour déboguer les GSP. Je n'ai pas pu obtenir eclipse pour trouver les fichiers sources, mais cela fonctionne probablement dans Spring Tool Suite Eclipse de nos jours. Vous devez déboguer pas à pas les codes groovy/step-in et utiliser les filtres, sinon vous risquez de perdre le point de pas (à cause des fermetures?). C'est déjà une autre histoire ...

Questions connexes