【问题标题】:Expression Language & Eclipse warning: "items" does not support runtime expressions表达式语言和 Eclipse 警告:“项目”不支持运行时表达式
【发布时间】:2011-04-01 15:41:17
【问题描述】:

我有以下 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 表达式?

【问题讨论】:

    标签: java eclipse jsp jstl el


    【解决方案1】:

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

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

    【讨论】:

    • 并确保 web.xml 至少声明为 Servlet 2.4
    • @BalusC 我收到此异常,它似乎与您的评论有关:org.apache.jasper.JasperException:绝对 uri:java.sun.com/jsp/jstl/core 无法在 web.xml 或使用此应用程序部署的 jar 文件
    • 你能帮我做点什么吗?
    • 还应该添加适当的jstl库:jstl-1.2.jar而不是jstl.jar和standard.jar stackoverflow.com/questions/8257677/…
    • 谢谢..这对我有用。有没有办法将&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt; 默认添加到所有JSP文件中?
    【解决方案2】:

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

    双子库

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

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

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

    在使用 EL 标签库时,您 不能通过脚本语言 an 值的表达式 属性。这条规则使之成为可能 验证语法 翻译时的表达。

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

    【讨论】:

      【解决方案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 得到这个。

      【讨论】:

      • 这绝对不是正确的解决方案。提议的 URI 来自 JSTL“原型”版本。您应该升级到至少 JSTL 1.1。另请参阅 axtavt 的回答和 stackoverflow.com/tags/jstl/info
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多