Le espressioni EL non vengono eseguite in Tomcat 5.5, ma funzionano in tomcat 6.0.20

Sto sviluppando la mia applicazione usando spring-web-mvc …

Ora sul mio Controller ritorna in questo modo:

public class InterfacesManageController implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { Map myModel = new HashMap(); myModel.put("interfacesList", this.interfacesSecurityProcessor.findByAll(0, null, null, null)); return new ModelAndView("common", "model", myModel); } 

Ora, il mio JSP contiene il seguente codice:

   

Ora, quando sto eseguendo questo su piattaforma Windows dove ho Tomcat 6.0.20, ognl 2.6.11 mi sta dando l’output esatto che voglio:

 117 eth1 118 eth1 119 eth0 

Ma, quando sto distribuendo il file di guerra nella piattaforma unix (cent os), dove ho il tomcat 5.5, l’espressione ognl non viene eseguita e mi dà l’output come:

 ${prod.id} ${prod.name} 

Qualcuno può avere una soluzione, quale dovrebbe essere il problema con la versione di espressione di ognl e la versione di tomcat?

Grazie in anticipo…

Ma, quando sto distribuendo un file di guerra nella piattaforma Unix (CentOS), dove ho Tomcat 5.5, l’espressione EL non viene eseguita e mi dà l’output come:

 ${prod.id} ${prod.name} 

In altre parole, l’espressione EL non viene affatto valutata e viene visualizzata come testo normale? Questo può avere una o più delle seguenti cause:

  1. Il server applicazioni in questione non supporta JSP 2.0.
  2. Il web.xml non è dichiarato come Servlet 2.4 o superiore.
  3. Il <%@page %> di JSP è configurato con isELIgnored=true .
  4. Il web.xml è configurato con true in .

Tomcat 5.5 è Servlet 2.4 / JSP 2.0, quindi # 1 può essere graffiato. Non hai cambiato nulla in webapp prima della distribuzione presumo, quindi i # 3 e # 4 possono probabilmente essere graffiati. Ora lasciato # 2. Forse lo hai dichiarato come Servlet 2.5 per Tomcat 6.0 mentre Tomcat 5.5 comprende solo Servlet 2.4. In questo modo tutto diventerà un pasticcio dato che Tomcat potrebbe quindi eseguire il backup al minimo di compatibilità. È necessario redeclare web.xml come Servlet 2.4 in modo che funzioni sia in Tomcat 5.5 che in 6.0. La dichiarazione dovrebbe essere simile a:

    

Sei sicuro di aver incluso la libreria JSTL su Tomcat o sulla cartella lib dell’applicazione Web?

Questi collegamenti ti aiuteranno a:

Come configurare Tomcat affinché funzioni con JSTL

Come fare riferimento e usare jstl nella tua applicazione web

Grazie a BalusC per la sua eccellente risposta. Ho avuto esattamente lo stesso problema che ha diagnosticato sopra, e la sua soluzione mi ha fatto parte del modo in cui ci sono. Tuttavia, dovevo anche assicurarmi che le varie dipendenze JSP e JSTL della mia applicazione fossero tutte compatibili. In particolare, mi riferivo a JSTL 1.2 e questo problema non è andato via fino a quando non ho cambiato la dipendenza da JSTL 1.1.2 (a quel punto ho dovuto aggiungere anche una dipendenza esplicita su taglibs.standard: 1.1.2).

Il seguente post sul blog fornisce molte più informazioni sulla compatibilità tra le diverse versioni: http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web -applicazione/