JSP c:forEach items属性无法解析变量

时间:2014-01-12 18:30:54

标签: java jsp servlets

我在JSP项目中使用javax.servlet.jsp.jstl-1.2.1 lib。

这是我的代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
// other classes are included too
<%
Tools tools = new Tools();
news [] list = tools.getEvent();
%>

<html>
<body>

<c:forEach var="i" items="${list}"> <-- cannot resolve variable 'list', why?
/* Do something */
</c:forEach>

</body
</html>

如您所见,'list'变量超出但forEach不可见。我错过了什么? c:out工作正常。 它与java.lang.ClassNotFoundException: org.apache.jsp.index_jsp签名崩溃。

发生了奇怪的事情...... 我试图执行这个:

<c:forEach var="i" begin="1" end="5">
    <c:out value="works"/>
</c:forEach>

但是我得到了同样的错误..

1 个答案:

答案 0 :(得分:1)

如果你正在运行servlet 2.3容器或更高版本(我确定你是),那么你的JSP页面本身就可以使用JSTL 1.2(可能更高)。您不需要在部署中添加JSTL JAR。实际上,Tomcat的默认配置显式忽略部署JAR中以javax.servlet。*开头的任何类,而是使用自己的版本。

要使用表达式语言(EL),该值必须是页面上下文,请求对象,会话对象或servlet上下文的属性。

将您的值公开为页面上下文属性:

<%
Tools tools = new Tools();
news [] list = tools.getEvent();
pageContext.setAttribute("list", list);
%>