2010-04-30 9 views
2

J'ai une JSP qui prend un Arraylist de l'objet de session et en supprime les éléments. Il a semblé fonctionner très bien et puis sortir de nulle part quand je navigue vers cette page, la page est vide. J'ai vérifié les fichiers journaux Tomcat et catalina.out je reçois un JasperException une elle montre comme étant sur une ligne avec les éléments suivantsQuelles sont les causes possibles de JasperException

for(int i; i < agentItems.size(); i++) 

agentItems est le nom du ArrayList je me sers. Je l'ai débogué et n'arrive pas à comprendre quel pourrait être le problème. J'ai lu qu'un JasperException est parfois lancé comme un JSP NullPointerException. Est-ce vrai ou est-ce que je ne fais que complètement oublier le problème?

J'ai l'application Web en cours d'exécution sur une machine locale et un serveur intermédiaire pour le développement dans lequel les deux n'ont eu aucun problème. Pourquoi est-ce que ce n'est que sur ce serveur que ça me pose des problèmes?

Répondre

3

Cela peut être tout. Vous devez regarder un peu plus loin dans la pile, regardez la partie caused by ou root cause et la trace qui suit. Cela peut être causé par beaucoup de choses. Le JSP est essentiellement compilé dans un grand bloc try et tout Throwable capturé sera enveloppé dans une exception spécifique de servletcontainer telle que JasperException dans Tomcat et clones. Il se résume à ceci:

try { 
    // All translated JSP code comes here. Max 64K. 
} catch (Throwable t) { 
    throw new JasperException(t); 
} 

Vérifiez le nom du fichier .java dans la 1ère ligne de la stacktrace, recherchez ce dans le répertoire work du servletcontainer et ouvrez le fichier dans un éditeur. Est-ce que tu le vois? Cela dit, l'utilisation de scriptlets est bad practice. Utilisez Servlets pour contrôler/pré-traiter/post-traiter les demandes, utiliser Javabeans pour représenter les modèles de données, utiliser Taglibs dans JSP pour contrôler le flux et la sortie de la page, utiliser Expression Language (EL) dans JSP pour accéder aux données backend. Dans votre cas spécifique, vous pouvez parcourir un tableau ou List en utilisant la balise c:forEach de JSTL.

<c:forEach items="${agents}" var="agent"> 
    <p>Agent: ${agent.name} 
</c:forEach> 
0

jasperexception peut également se produire lorsque JSP ne peut pas accéder à un élément ou un élément, il est l'obtention de l'extérieur et là, il est peut-être incapable d'accéder agentItems. Essayez de fournir un nom de classe entièrement qualifié ou importez le package dans le cas contraire.

Questions connexes