Ich hatte gerade das gleiche Problem und verbrachte für immer versucht herauszufinden, was los war.
Ich habe viele Web-Apps von Grund auf neu entwickelt. Warum war dieser plötzlich nicht kooperierend?
Ein Unterschied war diesmal die Maven Webapp Archetype, um die Projektstruktur zu generieren. Es erstellt eine Datei web.xml, die wie folgt aussah:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
Sobald ich das als mein Problem erkannte, war ich sicher, dass ich die Antwort hatte. Also habe ich einen meiner 2.5 web.xml-Header kopiert, neu erstellt und neu implementiert. Keine Zigarre. Ich konnte nicht glauben, dass das nicht das Problem war. Bereinigt das Projekt, Tomcat neu gestartet. Nee.
RHSeeger Antwort führte mich zu versuchen, in die <% @ page isELIgnored = "false"%>. Das hat das Problem gelöst. Aber ich wollte immer noch wissen, warum el anfängt ignoriert zu werden.
Ich dachte, das EL wurde ignoriert, weil etwas mit meiner web.xml nicht stimmte, also habe ich es im Vergleich mit einer anderen Webapp-web.xml genau untersucht, die mir gut geklappt hat. Keine merklichen Unterschiede.
Dann entfernte ich die <% @ page isELIgnored = „false“%> von meiner JSP, und umgeschichtet, würde der el unter der Annahme nicht erneut bewertet werden, aber viel zu meiner Überraschung wurde der el bewerten in Ordnung!
Dann muss es ein Caching-Problem sein, ich habe meine Änderungen an der web.xml rückgängig gemacht, um das Problem neu zu erstellen. Ich habe mich umgezogen, aber trotzdem wurde das EL korrekt ausgewertet, sogar mit der schlechten web.xml. Dann putzte ich mein gesamtes Projekt (ich benutze eine explodierte Bereitstellung), blies das explodierte Verzeichnis weg und erstellte es neu. Ich habe dann Tomcat neu gestartet. Trotzdem scheint das el trotz der schlechten web.xml richtig ausgewertet zu werden.
Endlich dämmerte es mir.Ich habe einfach einen Platz an einer Stelle in der JSP hinzugefügt, neu gepackt und die Seite aktualisiert. Bingo! Jetzt wurde das EL nicht ausgewertet. Das Problem war mit der web.xml. Es würde weiter durch die Tatsache kompliziert, dass die JSPs nicht neu kompiliert würden, wenn sie sich nicht geändert hätten. Nicht sicher, ob Tomcat eine MD5-Summe verwendet, um zu entscheiden, ob die JSPs neu kompiliert werden müssen oder was. Eine andere Möglichkeit ist, dass ich Kacheln verwende, von denen ich weiß, dass sie einen Caching-Mechanismus haben, aber ich würde nicht erwarten, dass sie einen Tomcat-Neustart überleben.
Wie auch immer, es sei denn, Sie modifizieren Ihre JSPs nach dem Beheben der web.xml, alle Wetten sind aus, ob die EL wieder zu arbeiten beginnt. Hoffe, dass dies jemand anderem Kopfschmerzen erspart. Ich bin auch interessiert, wenn mir jemand sagen kann, ob Tomcat nicht die JSPs neu kompiliert oder die Ausgabe der JSP zwischenspeichert. Ich bin mir ziemlich sicher, dass es die Neukompilierung ist, denn zur Kompilierungszeit sollte die JSP herausfinden müssen, was mit den $ {} el-Ausdrücken geschehen soll, oder? Tiles können nicht wirklich zwischenspeichern, was in die el-Ausdrücke substituiert wird, sonst würden alle Arten von Problemen auftreten.
auf Tomcat 5.5, gibt es zwei mögliche Gründe (nur?): Ungültiges Schema in web.xml oder el- ignorierte Konfigurationsoption. –
Ich (und andere) hatten eine einzelne Seite funktioniert gut und, nachdem etwas auf der Seite geändert (dh, etwas HTML hinzufügen), hört es einfach auf, die EL-Ausdrücke zu bewerten. Die einzige Erklärung, die ich mir vorstellen kann, ist ein Bug in Tomcat, aber es lohnt sich nicht, zu tief hinein zu graben, da die manuelle Aktivierung (über den obigen Code) das Problem löst. – RHSeeger
Wenn Sie Ihre Webanwendung mit Maven Archetype erstellt haben, lautet die richtige Antwort: http://StackOverflow.com/a/25372735/20654 – OscarRyz