studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones java eclipse jsp jstl el

java - reales - libro de android studio en español pdf



Lenguaje de expresión y advertencia de Eclipse: "elementos" no admite expresiones de tiempo de ejecución (3)

tengo el siguiente JSP:

<%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <%@ page isELIgnored="false"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><c:out value="${it.title}"/></title> </head> <body> <c:forEach var="speaker" items="${it.speakers}" varStatus="stat"> <ul> <li><c:out value="${speaker.person.firstName}" /> <c:out value="${speaker.person.lastName}" />, <c:out value="${speaker.person.address.city.zip}" /> <c:out value="${speaker.person.address.city.name}" /></li> </ul> </c:forEach> </body> </html>

Eclipse me advierte sobre cada instancia de EL Expressions en mi código:

Warning [line 10]: "value" does not support runtime expressions Warning [line 13]: "items" does not support runtime expressions ...

sin embargo, esto no es cierto, EL es evaluado correctamente por el servidor.

¿Alguien puede indicarme en la dirección correcta por qué el eclipse me está advirtiendo acerca de esas expresiones EL?


Posible solución (se encuentra aquí ):

Bibliotecas gemelas

Las bibliotecas de etiquetas JSTL vienen en dos versiones que difieren solo en la forma en que admiten el uso de expresiones en tiempo de ejecución para valores de atributo.

En la biblioteca de etiquetas JSTL-RT, las expresiones se especifican en el lenguaje de scripting de la página. Así es exactamente como funcionan las cosas en las bibliotecas de etiquetas actuales.

En la biblioteca de etiquetas JSTL-EL, las expresiones se especifican en el lenguaje de expresiones JSTL. Una expresión es un literal String en la sintaxis del EL.

Al utilizar la biblioteca de etiquetas EL, no puede pasar una expresión de lenguaje de scripts para el valor de un atributo. Esta regla hace posible validar la sintaxis de una expresión en el tiempo de traducción.

Entonces, tal vez su eclipse y el servidor usan diferentes bibliotecas de etiquetas.


Su directiva taglib importa un taglib JSTL 1.0. Debería ser JSTL 1.1 en su lugar (tenga en cuenta la diferencia en URI):

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


prueba esto: cambia esto:

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>

a sí:

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>

Espero que funcione para ti. Obtuve esto de www.csdn.net.