Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              EL Ausdrücke nicht in JSP ausgewertet                                      2 Antworten                          
  •     
    

Ich habe eine JSP-Seite läuft auf Tomcat 5.5. Ich habe den folgenden Code:

 <c:forEach var="i" begin="1" end="10" step="1">
  <c:out value="${i}" />
  <br />
</c:forEach>

Der Ausgang Ich erhalte ist:

${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 
${i} 

Ich kann nicht arbeiten, warum die foreach-Schleife funktioniert, aber die Ausgabe nicht funktioniert. Jede Hilfe jemand geben könnte wäre toll.

War es hilfreich?

Lösung

Ich weiß, dass es angenommen hat, standardmäßig aktiviert sein, aber ich laufe über mehrere Seiten hin und wieder (oder sogar die gleiche Seite, die Verhaltensänderungen), in dem die EL-Verarbeitung nicht geschieht. Wenn Sie folgende an die Spitze von solchen Seiten sollten das Problem beheben:

<%@ page isELIgnored="false" %> 

Ich füge es auf jede Seite, weil es tut nicht weh, und ich weiß noch nicht die Ursache, die gelegentlich eine Seite verursacht Interpretation des EL Ausdrücke zu stoppen.

Andere Tipps

ich das gleiche Problem nur hatte und verbrachte immer zu versuchen, herauszufinden, was falsch war.

Ich habe viele Web-Anwendungen von Grund auf neu entwickelt. Warum plötzlich kooperiert diese nicht?

Ein Unterschied war diesmal ich das Maven Webapp Urform verwendet, um die Projektstruktur zu erzeugen. 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 erkennen, dass, wie mein Problem, ich war sicher, dass ich die Antwort hatte. So kopierte ich einen meiner 2.5 web.xml Header, umgebaut und umgeschichtet. Keine Zigarre. Kann nicht glauben, dass nicht das Problem war. Gereinigt das Projekt neu gestartet Kater. Nee.

RHSeeger Antwort mich dazu gebracht, in der <% @ page isELIgnored = "false" %> zu versuchen setzen. Das löste das Problem. Aber ich wollte noch wissen, warum el begann mit immer ignoriert zu beginnen.

dachte ich, das el wegen mit meiner web.xml etwas falsch ignoriert wurde, so dass ich betrachtete es eng im Vergleich zu anderen web.xml des Webapp, die ich fein gearbeitet kannte. 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 ausgewertete Ordnung!

Dann herauszufinden, es muss irgendeine Art von Caching-Problem sein, öffnete ich meine Änderungen an dem web.xml das Problem neu zu erstellen. I umgeschichtet, aber immer noch der el richtig ausgewertet wurde, sogar mit dem schlechten web.xml. Dann reinigte ich mein gesamtes Projekt (Ich verwende eine Explosions Deployment), das explodierte Verzeichnis weggeblasen und es neu zu erstellen. Ich neu gestartet tomcat dann. Dennoch schien der el richtig trotz der schlechten web.xml ausgewertet wird zu werden.

Schließlich dämmerte es mir. Ich habe einfach einen Raum zu einem Ort in der JSP, neu verpackt es und die Seite aktualisiert. Bingo! Nun wurde der el nicht ausgewertet zu werden.

So das Problem beträgt mit der web.xml. Es wäre ferner durch die Tatsache erschwert, dass die JSPs wurden nicht neu kompiliert zu werden, wenn sie nicht verändert hatte. Nicht sicher, ob tomcat eine MD5-Summe verwendet, um zu entscheiden, ob die JSPs müssen neu kompiliert oder was werden. Eine weitere Möglichkeit ist, dass ich bin mit Fliesen, die ich kenne einen Caching-Mechanismus hat, aber ich würde nicht erwarten, dass ein Kater Neustart, um zu überleben.

Wie auch immer, es sei denn, Sie JSPs ändern, nachdem die web.xml Festsetzung sind alle Wetten ab, ob der EL wieder zu arbeiten beginnt. Hoffe, das spart jemand anderes Kopfschmerzen. Ich bin auch daran interessiert, ob jemand kann mir sagen, ob es Kater nicht die JSPs oder Fliesen die Ausgabe der JSP Cachen neu zu kompilieren. Ich bin mir ziemlich sicher, dass es die erneute Kompilierung, weil zum Zeitpunkt der Kompilierung ist, wenn die JSP sollte, was hat, um herauszufinden, mit dem $ {} el Ausdrücke zu tun, nicht wahr? Fliesen können eigentlich nicht cachen, was in die EL-Ausdrücke ersetzt wird, da sonst alle Arten von Problemen entstehen würden.

Es ist der Header in web.xml, die das Problem verursacht

Unter Maven erzeugte Header stoppt EL von eval'ed wird.

<!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>

Mit unterhalb des EL Header eval.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

Stellen Sie sicher, die entsprechende Namespaces in der web.xml aufzunehmen. Versuchen Sie einfach zu ersetzen

<web-app>

mit so etwas wie

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

Es regelte es für mich. Sie können den richtigen Namensraum für Ihre Tomcat-Instanz in den Beispiel-Anwendungen finden, die mit einem Tomcat kommen installieren.

Für Interessenten, die entsprechende XML-Syntax für JSP 2.0 ist:

<jsp:directive.page isELIgnored="false"/>

hatten ähnliches Problem zu Kevin, ich Maven verwendet mit Webapp zu beginnen, aber keine Freude mit Ausdrücken in jsp Auswertung - ich hatte DOCTYPE-Header zu entfernen - ist alles gut jetzt ohne mit isELIgnored Bit zu spielen - Maven web.xml, welche Links generieren die als Peter auf 2,3 festgestellt hat EL standardmäßig deaktiviert

Siehe meine Antwort auf Javascript String. replace (/ \ $ /, str) arbeitet weirdly in jsp Datei für mögliche Gründe.

Lange Antwort: $ {i} ist Ausdruck in so genannten 'Expression Language'. Manchmal kann Expression Language deaktiviert werden. Siehe oben Antwort auf mögliche Gründe und Möglichkeiten, wie sie aktivieren.

Mit tomcat6. Es spielt erfordert keine Konfiguration für EL in web.xml.

Von Controller:

@RequestMapping(value = "createcustomer",method = RequestMethod.GET)
    public String customer(Model model)
    {
        Customer cus=new Customer();
        cus.setCustomerNumber("Test");
        model.addAttribute("customer",cus);
        return "createcustomer";
    }

In Aussicht:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 

<div class="cl">    
   <form:form commandName="customer" method="POST">

      <p>Name: <c:out value="${customer.CustomerNumber}"></c:out></p>

   </form:form>
<div>

Ausgabe:

Name: Test
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top