Domanda

A questa domanda ha già una risposta qui:

Ho una pagina JSP in esecuzione su Tomcat 5.5.Ho il seguente codice:

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

L'output che si ottiene è:

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

Non posso sapere il perché di questo ciclo forEach è funzionante ma l'uscita non funziona.Qualsiasi aiuto qualcuno potrebbe dare sarebbe grande.

È stato utile?

Soluzione

Lo so che dovrebbe essere attiva per impostazione predefinita, ma corro attraverso le pagine di tanto in tanto (o anche la stessa pagina che cambia comportamento) in cui il trattamento EL non accade. L'aggiunta dei seguenti alla parte superiore di tali pagine dovrebbe risolvere il problema:

<%@ page isELIgnored="false" %> 

lo aggiungo ad ogni pagina perché non fa male, e io ancora non so la causa principale che provoca a volte una pagina per fermare interpretare le espressioni EL.

Altri suggerimenti

Ho appena avuto lo stesso problema e ha trascorso per sempre cercando di capire cosa c'era di sbagliato.

Ho sviluppato un sacco di applicazioni web da zero.Perché improvvisamente era questo uno non collaborare?

Una differenza era che questa volta ho utilizzato il plugin di maven webapp archetipo per generare la struttura del progetto.Ha creato un web.xml file che si presentava così:

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

Una volta che ho capito che il mio problema, ero sicuro che la risposta.Così ho copiato uno dei miei 2.5 web.xml intestazioni, ricostruita e riutilizzati.Senza sigaro.Non riusciva a credere che non era il problema.Pulire il progetto, riavviare tomcat.Nope.

RHSeeger risposta mi ha portato a provare a mettere in <%@ page isELIgnored="false" %>.Che ha risolto il problema.Ma io volevo sapere perché el iniziato a ricevere ignorata a iniziare con.

Ho pensato che l'el è stato ignorato a causa di qualcosa di sbagliato con il mio web.xml così ho analizzati in confronto con un altro webapp s web.xml che ho saputo che ha funzionato bene.Senza apprezzabili differenze.

Poi ho tolto il <%@ page isELIgnored="false" %> dal mio JSP e riutilizzati, supponendo che l'el non sarà valutato di nuovo, ma con mia grande sorpresa, l'el è stata valutata bene!

Quindi, capire che deve essere un qualche problema di cache, ho annullato le mie modifiche al web.xml per ricreare il problema.Ho reinstallato, ma ancora l'el è di essere valutati correttamente, anche con le cattive web.xml.Poi ho pulito tutto il mio di progetto (sto usando un esploso di distribuzione), di spazzare via la directory esplosa e ricrearla.Poi ho riavviato tomcat.Ancora, l'el è apparso per essere sempre valutato correttamente nonostante le cattive web.xml.

Infine, mi sono reso conto.Ho semplicemente aggiunto uno spazio per un po ' di posto in JSP, riconfezionato e aggiornato la pagina.Bingo!Ora l'el non è stato sempre valutato.

Così il problema era con il web.xml.Avrebbe ulteriormente complicato dal fatto che le Jsp non capivano ricompilato a meno che non abbiano cambiato.Non sono sicuro se tomcat una somma MD5 decidere se Jsp bisogno di essere ricompilato o cosa.Un'altra possibilità è che sto utilizzando piastrelle, che so che ha un meccanismo di caching, ma non mi aspetto che, per sopravvivere, un riavvio di tomcat.

Comunque, a meno che non si modificano le pagine Jsp DOPO il fissaggio web.xml tutte le scommesse sono spenti, come se EL inizierà a lavorare di nuovo.Spero che questo salva qualcun altro mal di testa.Sono interessato anche se qualcuno può dirmi se è stato tomcat non ricompilare il Jsp o piastrelle di memorizzazione nella cache di output del file JSP.Io sono abbastanza sicuro che la ricompilazione, perché in fase di compilazione è quando JSP dovrebbe avere per capire cosa fare con il ${} el espressioni, giusto?Piastrelle in realtà non può cache che viene sostituito nelle espressioni el, altrimenti tutti i tipi di problemi che potrebbero sorgere.

E 'l'intestazione in web.xml che causa il problema

Questi maven generato intestazione fermate EL dall'essere eval'ed.

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

Al di sotto di testa di eval l'EL.

<?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">

Assicurati di includere gli spazi dei nomi rilevanti nel web.xml. Basta provare a sostituire

<web-app>

con qualcosa di simile

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

E 'fissato per me. È possibile trovare gli spazi dei nomi corretti per l'istanza di Tomcat nelle applicazioni di esempio che vengono con un Tomcat installazione.

Per chi fosse interessato, la sintassi XML equivalente per JSP 2.0 è:

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

avuto un problema simile a Kevin, ho usato maven per iniziare con la webapp, ma nessuna gioia con la valutazione di espressioni in jsp - ho dovuto rimuovere DOCTYPE intestazione - tutto è bene ora senza giocare con i isELIgnored bit - maven genera web.xml i collegamenti da 2.3 che, come Pietro ha dichiarato EL disattivata per impostazione predefinita

Vedere la mia risposta a Javascript String. sostituire (/ \ $ /, str) funziona stranamente in file JSP per possibili ragioni.

Più rispondere: $ {i} è espressione nel cosiddetto 'Expression Language'. A volte, Expression Language può essere disabilitata. Vedi sopra risposta per i potenziali motivi e modi per attivarla.

Usa tomcat6. Non richiede alcuna configurazione per la EL in web.xml.

Da 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 Vista:

<%@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>

Output:

Name: Test
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top