Expression Language & Eclipse warning: "items" does not support runtime expressions
Asked Answered
M

3

27

i have the following 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 warns me about every instance of EL Expressions in my code:

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

this is however not true, EL gets evaluated correctly by the server.

Can anyone hint me in the right direction why eclipse is warning me about those EL expressions?

Marine answered 20/8, 2010 at 12:54 Comment(0)
A
63

Your taglib directive imports a JSTL 1.0 taglib. It should be JSTL 1.1 instead (note the difference in URI):

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
Allocation answered 20/8, 2010 at 14:3 Comment(5)
And ensure that web.xml is declared as at least Servlet 2.4Kitsch
@Kitsch I am getting this exception and it seems to be related to your comment : org.apache.jasper.JasperException: The absolute uri: java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this applicationJezreel
Can you help what I need to do?Jezreel
Also appropriate jstl library should be added: jstl-1.2.jar instead of jstl.jar and standard.jar #8258177Twopenny
Thanks.. this worked for me. Is there a way to add the line <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> by default to all JSP files?Banna
M
4

Possible solution (found here):

Twin Libraries

The JSTL tag libraries come in two versions which differ only in the way they support the use of runtime expressions for attribute values.

In the JSTL-RT tag library, expressions are specified in the page's scripting language. This is exactly how things currently work in current tag libraries.

In the JSTL-EL tag library, expressions are specified in the JSTL expression language. An expression is a String literal in the syntax of the EL.

When using the EL tag library you cannot pass a scripting language expression for the value of an attribute. This rule makes it possible to validate the syntax of an expression at translation time.

So maybe your eclipse and the server use different tag libraries.

Moulding answered 20/8, 2010 at 13:3 Comment(0)
E
2

try this: change this:

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

to yes:

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

hope it works for you. I got this from www.csdn.net.

Emden answered 26/11, 2012 at 13:51 Comment(1)
This is absolutely not the right solution. The proposed URI is from the JSTL "prototype" version. You should upgrade to at least JSTL 1.1. See also axtavt's answer and stackoverflow.com/tags/jstl/infoKitsch

© 2022 - 2024 — McMap. All rights reserved.