java - lib - jstl listar
Las variables JSTL no se muestran en EL (1)
Esta pregunta ya tiene una respuesta aquí:
- Expresiones EL no evaluadas en JSP 2 respuestas
Los valores de la variable JSTL no se muestran en EL. Por ejemplo, este código:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<html>
<body>
<c:forEach var="i" begin="1" end="5" >
<c:out value="${i}" />
</c:forEach>
</body>
</html>
el navegador muestra como: ${i} ${i} ${i} ${i} ${i}
O este:
<c:set var="someVar" value="Hello"/>
<c:out value="${someVar}"/>
muestra el navegador: ${someVar}
Estoy usando Spring-MVC 3 y Maven para construir el proyecto de muestra, desplegándolo en Tomcat 7. En el contexto de Spring, tengo la resolución de la vista configurada de la siguiente manera:
<bean class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="
org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp" />
</bean>
Las variables del modelo aprobadas desde el controlador de Spring no se muestran también.
Mavens pom.xml tiene las siguientes dependencias relacionadas con jstl:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
Entonces, ¿alguna sugerencia de cómo resolver esto?
Entonces, ¿el EL (esas ${}
cosas) no se ejecuta? Eso puede suceder cuando su servletcontainer se ejecuta en el modo Servlet 2.3 / JSP 1.2 o inferior, mientras está utilizando JSTL 1.1 o posterior. Durante el cambio de JSTL 1.0 a 1.1, EL pasó de JSTL a JSP. Eso fue JSP 2.0, que es parte de Servlet 2.4. JSP 1.2 y versiones anteriores no tienen EL incluido. JSTL 1.1 y versiones posteriores no tienen EL incluido.
web.xml
asegurarse de que su declaración raíz web.xml
cumpla al menos el Servlet 2.4. Como está utilizando JSP 2.1, que es parte de Servlet 2.5, aparentemente se está dirigiendo a un contenedor compatible con Servlet 2.5. Por lo tanto, asegúrese de que su declaración de raíz web.xml
cumpla con Servlet 2.5:
<?xml version="1.0" encoding="UTF-8"?>
<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_5.xsd"
version="2.5">
<!-- Config here. -->
</web-app>
Sin embargo, Tomcat 7 es un contenedor compatible con Servlet 3.0. Consideraría cambiar maven pom para declarar Servlet 3.0 / JSP 2.2 para que pueda beneficiarse con todas las características nuevas de Servlet 3.0.
Ver también:
- Nuestra página wiki JSTL
- Historia de EL