<c:foreach>无法识别! 。 JSP中的ArrayList迭代器</c:foreach>

时间:2012-04-18 05:49:14

标签: java jsp arraylist jstl taglib

我查看了与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> 

3 个答案:

答案 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中结束。