Expression Language & Eclipse avertissement: "items" ne supporte pas les expressions runtime

j'ai le texte suivant 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 prévient de chaque instance des Expressions EL dans mon code:

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

ce n'est toutefois pas vrai, EL est évalué correctement par le serveur.

est-ce que quelqu'un peut m'indiquer dans la bonne direction pourquoi eclipse me prévient à propos de ces expressions EL?

27
demandé sur fasseg 2010-08-20 16:54:47

3 réponses

votre directive taglib importe un taglib JSTL 1.0. Il devrait être JSTL 1.1 au lieu de cela (notez la différence dans l'URI):

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
56
répondu axtavt 2010-08-20 14:03:31

solution Possible (trouvé ici):

Bibliothèques Jumelles

les bibliothèques d'étiquettes JSTL viennent en deux des versions qui ne diffèrent que par la manière ils ont en charge l'utilisation d'exécution expressions pour les valeurs d'attribut.

Dans la JSTL-RT de la bibliothèque de balises, les expressions sont spécifiées dans la le langage de script de page. C'est exactement comment les choses fonctionnent actuellement dans bibliothèques d'étiquettes actuelles.

Dans le JSTL-el tag library, les expressions sont spécifiées dans le JSTL l'expression de la langue. Une expression est une chaîne de caractères littérale dans la syntaxe du EL.

lorsque vous utilisez la bibliothèque el tag, vous ne peut pas passer un langage de script expression de la valeur d'un attribut. Cette règle permet pour valider la syntaxe d'une expression au moment de la traduction.

alors peut-être que votre eclipse et le serveur utilisent des bibliothèques de balises différentes.

4
répondu Andreas_D 2010-08-20 13:03:40

essayez ceci: modifiez ce qui suit:

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

oui:

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

j'espère que cela fonctionne pour vous. J'ai eu ça de www.csdn.net.

2
répondu Kurt_Zhu 2012-11-26 13:51:45