我查看了与JSTL和arrayList相关的所有帖子,仍无法找到解决方案。
我一直在尝试使用taglib在jsp文件上迭代一个ArrayList。 我在构建路径中包含了最新的jstl 1.2 jar。 已正确配置taglib。
但仍然会在使用
的行前面出现错误 <c:forEach>
标签。 它说
<c:foreach>not recognized!,
是的,它显示错误的&#39; e&#39; in forEach!
请在下面找到我的代码。
控制器代码:
List<String> rolesList = new ArrayList<String>();
rolesList.add(ga.getAuthority());
JSP代码:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<select>
<c:forEach items="${rolesList}" var="role">
<option>${role}</option>
</c:forEach>
</select>
答案 0 :(得分:0)
你的RUNTIME类路径中是否有jstl 1.2 jar?这就是重要的地方!
答案 1 :(得分:0)
当我在jsp中包含jsf
时,我也遇到了同样的问题然后我下载最新的jstl jar并包含在项目lib中,
然后在标题
中添加以下代码<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
并将$更改为#,因为它在运行时不可见的数组列表,我改变了你的代码为我工作
你的代码
<select>
<c:forEach items="${rolesList}" var="role">
<option>${role}</option>
</c:forEach>
</select>
我换成了
<select>
<c:forEach var="list" items="#{Test.rolesList}" var="role">
<option>${list.role}</option>
</c:forEach>
</select>
注意:强>
测试是一个Managedbean
后bean代码中的@ManagedBean(name="Test")
谢谢
答案 2 :(得分:0)
我在构建路径中包含了最新的jstl 1.2 jar。
这不是完全正确的方法。
假设您正在使用Eclipse,则应将JAR文件放在项目的/WEB-INF/lib
文件夹中。真的没有什么需要做的。您不需要弄乱项目的 Build Path 属性。您应该撤消在那里所做的一切,以“解决”问题。
如果由于某种原因你真的坚持让JAR在项目的/WEB-INF/lib
文件夹之外,那么你不应该编辑 Build Path 属性,而是编辑部署程序集属性。这将使得实际的JAR最终在构建和部署的WAR的/WEB-INF/lib
中结束。