web-dev-qa-db-fra.com

Comment puis-je déboguer un JSP?

J'essaie d'éditer une JSP pour un projet et j'obtiens une NullPointerException quelque part dans la JSP lorsqu'elle est demandée à mon serveur.

Mon serveur Web (JBoss) signale l'exception, mais il me donne un faux numéro de ligne. Il signale que l'exception s'est produite sur la ligne 702, mais mon JSP ne fait que 146 lignes, donc je ne peux pas identifier la ligne qui s'étouffe.

Quelles sont les bonnes techniques pour déboguer les erreurs dans les JSP? J'utilise IntelliJ 9 Ultimate comme mon IDE.

Merci

28
ampersandre

Plusieurs options peuvent vous aider:

  1. Cette réponse explique comment déboguer spécifiquement les JSP: https://stackoverflow.com/questions/33739/jsp-debugging-in-intellij-idea . Je n'ai jamais essayé cela, j'ai donc suivi les trois suggestions suivantes lorsque j'utilisais JSP, JBoss et IntelliJ ...

  2. N'oubliez pas que les JSP sont compilés en classes. Quand il dit la ligne 702, cela signifie dans la classe compilée. Si tu as test.jsp, le nom de la classe est probablement test_jsp, alors ouvrez votre répertoire de travail JBoss et recherchez test_jsp.Java (une fois que vous avez trouvé le bon répertoire, vous verrez que la structure du répertoire correspond à la structure de votre répertoire JSP). Chaque fois que j'avais une exception JSP, je pouvais trouver la ligne assez facilement et généralement la faire correspondre à la ligne correspondante dans la JSP.

  3. Les points d'arrêt fonctionnent très bien dans Java classes appelées à partir d'un JSP. Donc, vous pouvez peut-être déplacer le Java code de script que vous avez dans votre JSP dans une classe et débogage à partir du point d'entrée. À l'avenir, vous pouvez également prendre l'habitude de réorganiser votre logique afin que la majorité se trouve dans une classe en cours de appelé à partir de la JSP, et la JSP est simple, directe et, espérons-le, ne lève aucune exception. C'est de toute façon une bonne pratique.

  4. Mieux encore, supprimez tous (ou pratiquement tous) Java dans les classes Java, laissant les JSP pour les balises HTML et JSP. Je sais que ce n'est pas faisable) loin, mais encore une fois, c'est une bonne idée à long terme pour éviter des problèmes comme celui-ci.

30
Nicole