表达语言& Eclipse警告:“items”不支持运行时表达式

时间:2010-08-20 12:54:48

标签: java eclipse jsp jstl el

我有以下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表达式的每个实例:

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

但事实并非如此,服务器正确评估了EL。

任何人都可以向我提示正确的方向,为什么eclipse会警告我那些EL表达式?

3 个答案:

答案 0 :(得分:56)

您的taglib指令导入JSTL 1.0 taglib。它应该是JSTL 1.1(请注意URI的不同之处):

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

答案 1 :(得分:4)

可能的解决方案(found here):

  

双子库

     

JSTL标记库有两个   版本只在方式上有所不同   他们支持使用运行时   属性值的表达式。

     

在JSTL-RT标签库中,   表达式在。中指定   页面的脚本语言。这是   究竟目前的工作方式   当前的标签库。

     

在JSTL-EL标签库中,   表达式在JSTL中指定   表达语言。一个表达是   一个字符串文字的语法   EL。

     

使用EL标签库时   无法传递脚本语言   表达式的值   属性。这条规则使它成为可能   验证的语法   在翻译时表达。

所以也许你的eclipse和服务器使用不同的标签库。

答案 2 :(得分:2)

试试这个: 改变这个:

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

是的:

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

希望它适合你。我是从www.csdn.net得到的。