代码之家  ›  专栏  ›  技术社区  ›  fasseg

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

  •  27
  • fasseg  · 技术社区  · 15 年前

    我有以下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 回复  |  直到 15 年前
        1
  •  59
  •   axtavt    15 年前

    taglib指令导入JSTL 1.0 taglib。它应该是JSTL 1.1(注意URI中的差异):

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    
        2
  •  4
  •   Andreas Dolk    15 年前

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

    孪生图书馆

    JSTL标记库有两种 只在方式上不同的版本 属性值的表达式。

    表达式在 页面的脚本语言。这是 当前的工作方式 当前标记库。

    在JSTL-EL标记库中, 表达式在JSTL中指定 表达语言。表达式是 语法中的字符串文字 艾尔。

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

    因此,您的eclipse和服务器可能使用不同的标记库。

        3
  •  2
  •   Kurt_Zhu    13 年前

    试试这个: 更改此项:

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

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

    希望对你有用。我是从www.csdn.net。