Erreur JSP: contient une expression non valide. Échec de l'analyse de l'expression
Je suis en train de déboguer un ancien jsp site et j'ai donc installé tomcat 7 et Netbeans IDE 7.2.1 sur ma machine locale windows 7 et a obtenu tout ce que le programme d'installation. Mais quand je le lance, j'obtiens une erreur:
SÉVÈRE: Servlet.service() de la servlet jsp jeté exception
org.apache.jasper.JasperException: /pages/caselisting.jsp (ligne: 133, colonne: 35) "${cas.patientmaxdate}" contient une expression non valide(s): javax.el.ELException: Impossible d'analyser l'expression [${cas.patientmaxdate}]
Le code à la ligne, est:
<td><c:out default=" " escapeXml="false" value="${case.patientmaxdate}"/></td>
Je suis très nouveau pour les jsp et suis en train de faire quelques modifications à ce site ancien. J'ai fait quelques recherches et de lire que Tomcat 7 fait quelques changements pour cette erreur. Je vous serais reconnaissant si quelqu'un peut me guider dans la bonne direction.
Grâce.
La trace de la pile complète:
SÉVÈRE: Servlet.service() de la servlet jsp jeté exception
org.apache.jasper.JasperException: /pages/caselisting.jsp (ligne: 133,
colonne: 35) "${cas.patientmaxdate}" contient une expression non valide(s):
javax.el.ELException: Impossible d'analyser l'expression
[${cas.patientmaxdate}]
org.apache.jasper.compilateur.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
au
org.apache.jasper.compilateur.ErrorDispatcher.dispatch(ErrorDispatcher.java:408)
au
org.apache.jasper.compilateur.ErrorDispatcher.jspError(ErrorDispatcher.java:199)
au
org.apache.jasper.compilateur.Validateur$ValidateVisitor.checkXmlAttributes(Validateur.java:1223)
au
org.apache.jasper.compilateur.Validateur$ValidateVisitor.visite(Validateur.java:875)
au org.apache.jasper.compilateur.Nœud$CustomTag.accepter(Nœud.java:1539)
au org.apache.jasper.compilateur.Nœud$Nœuds.visite(Nœud.java:2376) à
org.apache.jasper.compilateur.Nœud$Visiteur.visitBody(Nœud.java:2428) à
org.apache.jasper.compilateur.Validateur$ValidateVisitor.visite(Validateur.java:894)
au org.apache.jasper.compilateur.Nœud$CustomTag.accepter(Nœud.java:1539)
au org.apache.jasper.compilateur.Nœud$Nœuds.visite(Nœud.java:2376) à
org.apache.jasper.compilateur.Nœud$Visiteur.visitBody(Nœud.java:2428) à
org.apache.jasper.compilateur.Nœud$Visiteur.visite(Nœud.java:2434) à
org.apache.jasper.compilateur.Nœud$Racine.accepter(Nœud.java:475)
org.apache.jasper.compilateur.Nœud$Nœuds.visite(Nœud.java:2376) à
org.apache.jasper.compilateur.Programme de validation.validateExDirectives(Validateur.java:1795)
au
org.apache.jasper.compilateur.Compilateur.generateJava(Compilateur.java:217)
au org.apache.jasper.compilateur.Compilateur.compiler(Compilateur.java:373) à
org.apache.jasper.compilateur.Compilateur.compiler(Compilateur.java:353) à
org.apache.jasper.compilateur.Compilateur.compiler(Compilateur.java:340) à
org.apache.jasper.JspCompilationContext.compiler(JspCompilationContext.java:646)
au
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
au
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
au org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
au javax.servlet.http.HttpServlet.service(HttpServlet.java:728) à
org.apache.catalina.de base.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
au
org.apache.catalina.de base.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
au
org.apache.catalina.de base.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
au
org.apache.catalina.de base.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
au
org.apache.catalina.de base.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
au
org.apache.catalina.de base.ApplicationDispatcher.avant(ApplicationDispatcher.java:339)
au
org.apache.jambes de force.d'action.RequestProcessor.doForward(RequestProcessor.java:1056)
au
org.apache.jambes de force.les tuiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
au
org.apache.jambes de force.d'action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
au
org.apache.jambes de force.les tuiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
au
org.apache.jambes de force.d'action.RequestProcessor.processus(RequestProcessor.java:231)
au
org.apache.jambes de force.d'action.ActionServlet.processus(ActionServlet.java:1164)
au
org.apache.jambes de force.d'action.ActionServlet.doGet(ActionServlet.java:397)
au javax.servlet.http.HttpServlet.service(HttpServlet.java:621) à
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) à
org.apache.catalina.de base.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
au
org.apache.catalina.de base.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
au filtre.SecureFilter.doFilter(SecureFilter.java:38)
org.apache.catalina.de base.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
au
org.apache.catalina.de base.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
au
org.apache.catalina.de base.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
au
org.apache.catalina.de base.StandardContextValve.invoke(StandardContextValve.java:123)
au
org.apache.catalina.authentificateur.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
au
org.apache.catalina.de base.StandardHostValve.invoke(StandardHostValve.java:171)
au
org.apache.catalina.les vannes.ErrorReportValve.invoke(ErrorReportValve.java:99)
au
org.apache.catalina.les vannes.AccessLogValve.invoke(AccessLogValve.java:936)
au
org.apache.catalina.de base.StandardEngineValve.invoke(StandardEngineValve.java:118)
au
org.apache.catalina.connecteur.CoyoteAdapter.service(CoyoteAdapter.java:407)
au
org.apache.coyote.http11.AbstractHttp11Processor.processus(AbstractHttp11Processor.java:1004)
au
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.processus(AbstractProtocol.java:589)
au
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.exécuter(AprEndpoint.java:1822)
au
java.util.de façon concomitante.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
au
java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.exécuter(ThreadPoolExecutor.java:603)
à java.lang.Fil de discussion.exécution(Thread.java:722)
Le code complet entourant la ligne d'erreur est:
<c:forEach items="${caselist}" var="case">
<tr onMouseOver="this.bgColor='#EEEEEE';" onMouseOut="this.bgColor='';">
<td><c:out default=" " escapeXml="false" value="${case.patientmaxdate}"/></td>
Ici caselist est un tableau de la liste.
source d'informationauteur Ratan | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
Pas sûr de savoir si vous avez fini la résolution de celui-ci, mais ayant eu un problème similaire et de le résoudre, j'ai pensé à puce.
L'analyseur d'expression dans Tomcat 7 est apparemment moins permissive que c'était dans les versions précédentes. Il n'aime pas les noms d'attribut dans EL expressions qui clash avec les mots réservés en Java.
Dans votre exemple, l'analyseur peut-être se plaindre que vous êtes à l'aide de la variable nom de " cas " dans votre boucle forEach. Le nom de " cas " est évidemment réservé Java mot-clé.
Vous devez changer le nom de la variable à quelque chose qui n'est pas réservé (peut-être "aCase'):
Sinon, il y a un système de propriété que vous pouvez définir qui fera de Tomcat 7 plus permissive:
Vous aurez besoin d'ajouter qu'à la fin de la liste des propriétés dans la Java des Options dans la boîte de Tomcat 7 fenêtre de propriétés (exécuter Tomcat7w.exe).
Qui s'applique alors à toutes les pages de toutes les applications en cours d'exécution dans Tomcat 7.
La Java des mots-clés (comme
case
instanceof
if
while
class
return
static
etc.) ne peut pas être utilisé comme variable/les noms de fonction en EL. Préférez utiliser des noms différents, par exemple:J'ai eu le même problème, causé par la vaste utilisation de ce modèle:
<c:if test="${actionVar.class.name == 'MyClass'}">
<c:import url="${actionVar.cellRender}" /></c:if>
Problème résolu en ajoutant:
org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true
pour
/etc/tomcat7/catalina.properties
comme suggéré par @will-keeling
Tomcat 7 n'inclut pas la JSTL par défaut, vous devez ajouter séparément afin d'utiliser EL expressions. Si la ligne 133 est la première occurrence de l'utilisation d'une expression EL sur la page, alors vous devriez vérifier la bibliothèque JSTL est inclus dans $CATALINA_HOME/lib ou au sein de votre WEB-INF/lib.