Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

    
            
  •              EL no evaluados en JSP                                      2 respuestas                          
  •     
    

Tengo una página JSP en marcha en Tomcat 5.5. Tengo el siguiente código:

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

La salida que estoy recibiendo es:

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

No puedo entender por qué el bucle forEach está funcionando pero la salida no está funcionando. Cualquier ayuda cualquiera podría dar sería grande.

¿Fue útil?

Solución

Sé que se supone que debe ser activado de forma predeterminada, pero me encuentro con páginas de vez en cuando (o incluso la misma página que cambia el comportamiento) cuando el tratamiento EL no sucede. Añadiendo lo siguiente en la parte superior de cualquiera de dichas páginas debe resolver el problema:

<%@ page isELIgnored="false" %> 

añado a cada página, ya que no se pierde nada, y yo todavía no sé la causa raíz que en ocasiones hace que una página para detener la interpretación de las expresiones EL.

Otros consejos

Sólo tenía este mismo problema y pasé por siempre tratando de averiguar lo que estaba mal.

he desarrollado una gran cantidad de aplicaciones web desde cero. ¿Por qué de repente fue éste no coopera?

Una diferencia fue esta vez utilicé el arquetipo de Maven aplicación web para generar la estructura del proyecto. Se crea un archivo web.xml que se parecía a esto:

<!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 vez que me di cuenta de que a medida que mi problema, yo estaba seguro de que tenía la respuesta. Así que he copiado una de mis encabezados 2.5 web.xml, reconstruidos y redistribuidos. Sin cigarro. No podía creer que no era el problema. Limpiado el proyecto, reiniciado Tomcat. No.

La respuesta de RHSeeger me llevó a intentar poner en el <% @ página isELIgnored = "false" %>. Que se resolvió el problema. Aún así, yo quería saber por qué el comenzó a recibir ignorado, para empezar.

pensé que la EL estaba siendo ignorada por algo malo con mi web.xml, por lo que se examina de cerca en comparación con web.xml de otra aplicación web que sabía funcionó bien. No hay diferencias notables.

Luego retira el <% @ page isELIgnored = "false" %> de mi JSP, y vuelve a desplegar, suponiendo que el EL no sería evaluado de nuevo, pero para mi sorpresa, la EL se evaluó bien!

Entonces, pensando que debe haber algún tipo de problema de almacenamiento en caché, abrí mis cambios en el web.xml para volver a crear el problema. Me vuelve a desplegar, pero aún así el el estaba siendo evaluado correctamente, incluso con el mal web.xml. Luego limpié toda mi proyecto (estoy usando una implantación explotado), que arranca el directorio expandido y volver a crearlo. a continuación, he reiniciado Tomcat. Aún así, el EL parecía estar siendo evaluado correctamente a pesar de la mala web.xml.

Finalmente se me ocurrió. Simplemente añadí un espacio a algún lugar en el JSP, reenvasado, y refrescado la página. ¡Bingo! Ahora el EL no estaba siendo evaluado.

Así que el problema era con el web.xml. Sería complicado aún más por el hecho de que las páginas JSP no se iban a volver a compilar a menos que hubieran cambiado. No estoy seguro si Tomcat utiliza una suma MD5 para decidir si las páginas JSP necesitan volver a compilar o qué. Otra posibilidad es que estoy usando azulejos, que sé que tiene un mecanismo de caché, pero yo no esperaría que para sobrevivir un reinicio Tomcat.

De todos modos, a menos que modifique las JSP después de fijar el web.xml, todas las apuestas están apagadas en cuanto a si el EL comenzará a funcionar de nuevo. Espero que esto ahorra algún otro dolor de cabeza. También me interesa si alguien me puede decir si para Tomcat no se recompilar el JSP o azulejos almacenamiento en caché de la salida de la JSP. Estoy bastante seguro de que es la recompilación, porque en tiempo de compilación es cuando el JSP debería tener que averiguar qué hacer con los $ {} EL expresiones, ¿verdad? Azulejos realidad no se puede almacenar en caché lo que se sustituye en las expresiones EL, de lo contrario se producirían todo tipo de problemas.

Es la cabecera en web.xml que causa el problema

A continuación experto generada cabecera paradas EL sea 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>

El uso de continuación de la cabecera eval 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">

Asegúrese de incluir los espacios de nombres relevantes en el web.xml. Sólo trata de sustituir

<web-app>

con algo como

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

Se fija para mí. Puede encontrar los espacios de nombres correctos para su instancia de Tomcat en el ejemplo de aplicaciones que vienen con un Tomcat instalar.

Para los interesados, la sintaxis XML equivalente para JSP 2.0 es:

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

tenido un problema similar a Kevin, yo solía experto para empezar con webapp pero no alegría, con la evaluación de expresiones en JSP - que tenía que quitar la cabecera DOCTYPE - todo está bien ahora sin jugar con isELIgnored bits - experto genera Web.xml qué enlaces a 2.3 que, como declaró Peter ha EL desactivado por defecto

Véase mi respuesta en Javascript cadena. sustituir (/ \ $ /, str) funciona extrañamente en archivo JSP para posibles razones.

Respuesta larga: $ {i} es la expresión en el llamado 'lenguaje de expresión'. A veces, lenguaje de expresión se puede desactivar. Véase más arriba la respuesta por razones potenciales, y las formas cómo habilitarlo.

Uso tomcat6. No se requiere ninguna configuración para EL en web.xml.

A partir de controlador:

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

Ver:

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

Salida:

Name: Test
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top