2009-11-12 1 views
15

Sto sviluppando la mia applicazione utilizzando la primavera-web-MVC ...espressioni EL non saranno eseguiti in Tomcat 5.5, ma lavorando in Tomcat 6.0.20

Ora, a mio controller si ritorna in questo modo:

public class InterfacesManageController implements Controller { 
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 

    Map<String, Object> myModel = new HashMap<String, Object>(); 

    myModel.put("interfacesList", this.interfacesSecurityProcessor.findByAll(0, null, null, null)); 

    return new ModelAndView("common", "model", myModel); 
} 

Ora, il mio JSP contiene codice seguente:

<c:forEach items="${model.interfacesList}" var="prod"> 
    <c:out value="${prod.id}"/> <c:out value="${prod.name}"/><br><br> 
</c:forEach> 

Ora, quando sto eseguendo questo per piattaforma Windows, dove ho Tomcat 6.0.20, 2.6.11 OGNL mi sta dando di uscita esatta che voglio come:

117 eth1 

118 eth1 

119 eth0 

Ma, quando sto schierando file di guerra in UNIX (cent os) piattaforma, dove ho Tomcat 5.5, l'espressione OGNL non viene eseguita e dandomi 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 ...

risposta

33

Ma, quando sto schierando file di guerra in Unix (CentOS) piattaforma, dove ho Tomcat 5.5, il EL espressione 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 delle applicazioni in questione non supporta JSP 2.0.
  2. Il web.xml non è dichiarato come Servlet 2.4 o versione successiva.
  3. Il <%@page %> di JSP è configurato con isELIgnored=true.
  4. web.xml è configurato con <el-ignored>true</el-ignored> in <jsp-config>.

Tomcat 5.5 è Servlet 2.4/JSP 2.0, quindi il n. 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à. Devi redeclare lo web.xml come servo Servo 2.4 in modo che funzioni sia in Tomcat 5.5 che in 6.0.La dichiarazione dovrebbe essere simile a:

<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 

    <!-- Here you go. --> 

</web-app> 
+0

Hai la soluzione BalusC .... Grazie mille per le tue risposte ... In realtà stavo dichiarando Servlet 2.5 per il mio tomcat 6.0.20. Come mi hai detto, l'ho cambiato in Servlet 2.4, tutto funziona perfettamente ... – Nirmal

+0

Prego. – BalusC

+0

@BalusC Grazie mille. Ho trascorso molto tempo a recuperare da JasperException. Finalmente ho capito. Ho risolto il mio problema con la tua dichiarazione di esempio 'web.xml'. E aggiungendo 'jstl.jar' e' standard.jar'. +1 per 'web.xml'. – OO7

1

Sei sicuro di aver incluso libreria JSTL sia su Tomcat o il vostro Web della cartella lib di applicazione?

Questi link vi aiuteranno a:

How to set up Tomcat to work with JSTL

How to reference and use jstl in your web application

+0

Se JSTL non è stato installato si dovrebbe avere visto nulla * * in output visivo e tutto (non analizzata/non valutata) nel codice HTML fonte. – BalusC

+0

Ho JSTL nel mio classpath. Ecco perché sto ricevendo l'output in Windows con tomcat 6.0.20 .. Sono sicuro che ... – Nirmal

+0

Non avrebbe funzionato se JSTL fosse in classpath di Tomcat 6.0, ma non nel classpath di Tomcat 5.5. Apparentemente lo avete, o è nel classpath della webapp, quindi avrebbe funzionato su tutti gli ambienti. Ma OK, come detto questa non è la causa principale del problema qui. – BalusC

1

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-application/