我在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>
但是我得到了同样的错误..
答案 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);
%>