JSTL forEach 行为不当

问题描述 投票:0回答:1

问题定义:JSTL 标记在我的 JSP 中工作,但 forEach 除外。行为是它忽略请求对象。它适用于在页面上创建的对象,但对于来自请求的对象则失败。我无知的观点是它似乎没有检测到请求对象。通过确认 scriplet 和一些 Java 代码确认 ArrayList 到达 JSP,我可以为您节省很多问题,我什至逐项处理它并证明列表形状良好。 请放心,该列表确实会进入 JSP,并且我目前依靠 scriplet 来使应用程序正常工作。

话虽这么说,这是我的(有问题?)配置:

  1. Tomcat 10.1.25

  2. WEB-INF/lib/jakarta.servlet.jsp.jstl-3.0.1.jar,jakarta.servlet.jsp.jstl-api-3.0.0.jar

  3. 在 JSP 标头中:<%@taglib prefix="c" uri="jakarta.tags.core"%>

  4. 有问题的 forEach 循环:

     <c:forEach items="${prodList}" var="prods">
       <c:out value="Inside forEach ..."/>
       <c:out value="${prods.prodID}"/>
       <c:out value="${prods.prodName}"/>
    </c:forEach>
    
  5. Servlet: request.setAttribute("prods", prodList);

  6. 项目部署组件:/src/main/webapp = /

  7. 项目构建路径有两个 JSTL jars

  8. 奇怪的是,当我打字时

这东西让我想把我剩下的头发扯下来。

底线是 scriptlet 可以工作,而标签则不能。该标记似乎只是忽略任何请求对象。是的,其他标签也可以。这是关于 forEach 的。

jsp tomcat jstl
1个回答
0
投票

我感觉自己像个白痴,但我已经颠倒了项目和变量! JSTL 库没有任何问题,只是当我盯着项目为 EMPTY 的问题时,我的大脑出现了错误。空 items 对象意味着什么也没有发生,就好像 forEach 是脑死亡一样。 事实并非如此。 它正在做我要求它做的事情!

© www.soinside.com 2019 - 2024. All rights reserved.