Подтвердить что ты не робот

Язык выражений и предупреждение Eclipse: "элементы" не поддерживают выражения во время выполнения

У меня есть следующий 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 предупреждает меня обо всех экземплярах EL Expressions в моем коде:

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

это, однако, неверно, EL правильно оценивается сервером.

Может ли кто-нибудь намекнуть мне в правильном направлении, почему затмение предупреждает меня об этих EL-выражениях?

4b9b3361

Ответ 1

В вашей директиве taglib импортируется taglib JSTL 1.0. Вместо этого должен быть JSTL 1.1 (обратите внимание на разницу в URI):

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

Ответ 2

Возможное решение (найдено здесь):

Двойные библиотеки

Библиотеки тегов JSTL входят в два версии, которые отличаются только способом они поддерживают использование среды выполнения выражения для значений атрибутов.

В библиотеке тегов JSTL-RT, выражения указаны в язык сценариев. Это точно, как в настоящее время работают библиотеки текущих тегов.

В библиотеке тегов JSTL-EL, выражения указаны в JSTL язык выражений. Выражение Строковый литерал в синтаксисе EL.

При использовании библиотеки тегов EL вы не может передавать скриптовый язык выражение для значения атрибут. Это правило позволяет для проверки синтаксиса выражение во время перевода.

Итак, возможно, ваше затмение и сервер используют разные библиотеки тегов.

Ответ 3

попробуйте следующее: измените это:

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

для "да":

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

надеюсь, что это сработает для вас. Я получил это от www.csdn.net.