【问题标题】:<c:foreach> is not recogized! . ArrayList iteration in JSP<c:foreach> 无法识别! . JSP中的ArrayList迭代器
【发布时间】:2012-04-29 12:27:21
【问题描述】:

我浏览了所有与 JSTL 和 arrayList 相关的帖子,仍然找不到解决方案。

我一直在尝试使用 taglib 在 jsp 文件上迭代 ArrayList。 我在构建路径中包含了最新的 jstl 1.2 jar。 已正确配置 taglib。

但仍然在使用的行前面出现错误

 <c:forEach>

标签。 它说

 <c:foreach>not recognized!, 

是的,它在 forEach 中显示带有“e”的错误!

请在下面找到我的代码。

控制器代码:

   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> 

【问题讨论】:

  • 您使用的是哪个服务器?这不适用于旧的服务器版本。
  • 我正在使用 Tomcat 7。@HardikMishra:我添加了该链接中提到的两个较新版本的 jar。好像没有解决问题

标签: java jsp arraylist jstl taglib


【解决方案1】:

你的 RUNTIME 类路径中有 jstl 1.2 jar 吗?这才是最重要的!

【讨论】:

  • 我还是个菜鸟,如果你能详细说明一下就好了。我已将它作为外部 jar 包含在我的构建路径中,以及其他 jar(如 spring、hibernate 等),还有其他地方我应该删除这个 jstl jar 吗?
  • 如果您的构建工具构建了适当的战争,那么您应该在战争文件内的 lib 文件夹中找到它。战争文件是一个 zip 文件,因此任何 zip 文件实用程序都可以打开供您查看。始终可以选择将文件的副本放在应用程序服务器的 lib 文件夹中。如果您使用的是 Tomcat,您会在 Tomcat 文件夹的顶层找到它。
  • 我现在明白 RUNTIME 类路径的含义了。感谢@Tommy B 的解释,里面有 JSTL 1.2 jar,但问题仍然存在
【解决方案2】:

当我在 jsp 中包含 jsf 时,我也面临同样的问题

然后我下载最新的 jstl jar 并包含在项目库中,

然后在标题中添加以下代码

<%@ 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>

注意: 测试是一个托管bean @ManagedBean(name="Test") 在后面的 bean 代码中

谢谢

【讨论】:

  • 至于使用#{} 而不是${},OP 似乎没有在任何地方表明他正在使用 JSF。
【解决方案3】:

我在构建路径中包含了最新的 jstl 1.2 jar。

这不是完全正确的方法。

假设您使用的是 Eclipse,则 JAR 文件应放在项目的 /WEB-INF/lib 文件夹中。真的没有什么需要做的了。您不需要摆弄项目的 Build Path 属性。您应该撤消您在尝试“修复”问题时所做的一切。

如果您出于某种原因确实坚持将 JAR 放在项目的 /WEB-INF/lib 文件夹之外,那么您不应该编辑 Build Path 属性,而是编辑 Deployment Assembly em> 属性。这将注意 JAR 也实际上在构建和部署的 WAR 的 /WEB-INF/lib 中结束。

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 2012-09-01
    • 2018-03-22
    • 2013-04-30
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多