使用 c:foreach (JSP/JSTL) 迭代 ArrayList,变量不起作用

2024-03-22

我知道,关于我的问题有无数的例子,但我经历了很多,但无法弄清楚我的错误在哪里。

我正在迭代 ArrayList(TestSzenario)。 TestSzenario 类包含一个名为 name 的字符串变量,具有适当的 getter 和 setter。

这是我的代码:

<td><select name="selectSzenario" id="selectSzenario" size="1">
                <c:forEach items="<%=testszenario.getSzenariosForSummary() %>" var="szenario"> 
                    <option>${szenario.name}</option>
                </c:forEach></select></td></tr>

我的问题是,变量不起作用。我总是为选择框中的每个选项获取 ${szenario.name} 。我正确地声明了 JSTL-taglib,并且由于完成后站点中有多个选项,我知道迭代正在工作。我还查看了 HTML 源代码,foreach 已解决。

HTML 输出:

        <tr><td>Szenario:</td>
        <td><select name="selectSzenario" id="selectSzenario" size="1">

                    <option>${szenario.name}</option>

                    <option>${szenario.name}</option>
                </select></td></tr>

编辑答案 1: 谢谢,但我之前尝试过:

ArrayList<TestSzenario> szenarioList = testszenario.getSzenariosForSummary();
request.setAttribute("aList", szenarioList);
request.setAttribute("ts", testszenario);

<c:forEach items="${aList}" var="szenario">
<option>${szenario.name}</option>
</c:forEach></select></td></tr>

<c:forEach items="${ts.szenariosForSummary}" var="szenario">
<option>${szenario.name}</option>
</c:forEach></select></td></tr>

但在任何一种情况下,它甚至都不会迭代列表,导致只有 1 个选项(列表包含 2 个元素)。


The <%=testszenario.getSzenariosForSummary() %>会将对象转换为String using String#valueOf(Object)方法并将其直接写入 HTTP 响应。这不是你想要的。更重要的是,你应该not混合老派小脚本完全使用现代标签库/EL。

你需要确保testszenario可供 EL 使用${}。因此,只需在某些 servlet 中预先将其设置为页面、请求、会话或应用程序范围的属性,如下所示

request.setAttribute("testszenario", testszenario);

然后你就可以按照通常的方式访问它:

<c:forEach items="${testszenario.szenariosForSummary}" var="szenario"> 

也可以看看:

  • 如何避免JSP文件中出现Java代码? https://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files
  • 我们的 Servlet wiki 页面 https://stackoverflow.com/tags/servlets/info- 你好世界 #2 可能对你有用
  • 我们的 EL 维基页面 https://stackoverflow.com/tags/el/info

Update:至于 EL 不被解释的问题,显然 JSTL 和容器/之间不匹配web.xml版本。确保版本正确对齐。例如。 Servlet 3.0容器,version="3.0" in web.xml,JSTL 1.2。另请参阅我们的 JSTL wiki 页面。

也可以看看:

  • 我们的 JSTL 维基页面 https://stackoverflow.com/tags/jstl/info- 阅读“帮助!表达式语言(EL,那些${}东西)在我的 JSTL 标签中不起作用!”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 c:foreach (JSP/JSTL) 迭代 ArrayList,变量不起作用 的相关文章

随机推荐

  • Web API 2 是否可以以编程方式加载路由/控制器?

    我目前正在开发一个企业 Web 应用程序 该应用程序使用 WCF 来实现 REST API 它利用 VirtualPathProvider 捕获对 svc 文件 实际上并不存在 的请求 然后动态构建它们以动态加载关联的 WCF 服务 这允许
  • 如何查找 mstsc 的使用时间以及由谁使用?

    我们的团队地理位置分散 他们会使用远程桌面连接许多虚拟机 我想了解谁正在访问远程桌面会话以及使用了多长时间 我尝试用 powershell 来实现 我编写了一个脚本 用户将在其中使用 powershell 调用 mstsc 它将记录谁已登录
  • 单表继承和Yaml配置

    我想在我的项目中使用 symfony2 doctrine 的单表继承 但我找不到任何带有 yaml 配置的工作示例 官方文档中仅提供了注释配置 我找到了 xml 示例 但我想使用 yaml 配置 有人可以帮助并分享一些工作代码吗 好的内置转
  • 如何使用迭代器迭代二维ArrayList?

    我想迭代二维ArrayList包括String使用迭代器的对象 我还想以一种让我选择是否要首先水平 行 迭代还是垂直 列 迭代的方式使用boolean价值 我怎样才能在java中实现这个 到目前为止我已经尝试过的 public class
  • 如何在 MySQL 中执行“如果不存在则插入”?

    我首先通过谷歌搜索找到了这篇文章如何在标准 SQL 中编写 INSERT if NOT EXISTS 查询 http www xaprb com blog 2005 09 25 insert if not exists queries in
  • 如何在 C++ 中验证字符串是否为有效的 IPv4 地址?

    我不需要验证 IP 地址是否可达或类似的内容 我只想验证该字符串是否采用点分四组 xxx xxx xxx xxx IPv4 格式 其中 xxx 介于 0 到 255 之间 您可能想要内特 pton http man7 org linux m
  • 我可以在 AWS Lambda 函数上存储临时文件吗?

    我正在编写一个用于文件提取的 lambda 函数 并且需要在执行此函数时存储文件 因此需要将该文件存储在 aws lambda function 中 是否可以在 lambda 上存储文件 是的 引用自 AWS Lambda 常见问题解答 每
  • Visual Studio 2010 Express。写入输出窗口

    我是 Visual Studio 和 Windows Phone 7 开发新手 我确实激活了重定向所有输出文本选项 但 Debug Writeline 或 Console WriteLine 都不起作用 我如何记录信息 我也花了一段时间才找
  • 分布式任务队列(例如 Celery)与 crontab 脚本

    我无法理解 分布式任务队列 的用途 例如 python 的芹菜库 http www celeryproject org 我知道在 python 框架 celery 中 您可以设置定时窗口来执行函数 然而 这也可以在针对 python 脚本的
  • PostgreSQL 无法打开文件“base/xxxx/xxxxx”没有这样的文件或目录

    最近 我的 Linux 机器上出现了硬件故障 在修复硬件问题并恢复我的 Linux 机器后 当我对其中一个表执行查询时 返回以下错误 ERROR could not open file base 17085 281016 No such f
  • 创建动态分组依据

    df data frame A c 1 4 5 13 2 B c Group 1 Group 3 Group 2 Group 1 Group 2 C c Group 3 Group 2 Group 1 Group 2 Group 3 df
  • GUI 作为有限状态机

    为了实现应用程序的 GUI 我希望将所有逻辑从一种形式集中到另一种形式 该 GUI 管理器将充当有限状态机 虽然我想我在某处见过这种实现 但我找不到与这种解决方案相匹配的设计模式 表单将如下所示 public class Login For
  • 因它能做什么或因为它做了而关闭

    好吧 这是一个有点迂腐的问题 但我想确保我正确理解了这个定义 闭包绰号是用来描述匿名函数的can提升局部作用域中的变量 无论它们实际上是否这样做 或仅当它们do在局部范围内提升变量 换句话说 如果匿名函数具有ability在其本地范围内提升
  • 从 .lm.fit() 计算 p 值的快速方法

    我正在运行模拟并拟合线性模型 lm fit https www rdocumentation org packages pbdDMAT versions 0 4 2 topics lm fit 尽管速度极快 但该函数不提供预测变量的 p 值
  • 如何仅使用 GPX 文件进行 UI 测试

    我正在尝试使用 GPX 文件来模拟运行 UI 测试时的位置 我已在 测试位置 下选择了 GPX 文件 但这不起作用 我刚刚收到一个错误 告诉我 位置不可用 我知道 我可以进入 运行 gt 调试 然后激活 允许位置模拟 然后选择该文件作为 默
  • 从 GWT 访问 Web 服务

    有什么方法可以使用 GWT 的 WSDL 访问 Web 服务吗 以前我试图使用 ws import 生成的类 但后来有人向我指出 GWT 无法处理所有 Java 只能处理它的一个子集 因此它无法理解 ws import 类 感谢致敬 Krt
  • 为什么默认情况下不使用 Control.Monad.Instances 实现 (->)

    我正在读书LYAH http learnyouahaskell com functors applicative functors and monoids 它说我需要显式加载Control Monad Instances使以下语法起作用 f
  • 验证关联的唯一性

    给定以下课程 class Candidate has many applications has many companies through gt job offers end class JobOffer belongs to comp
  • c++ 仅读取文本文件最后一行的最快方法?

    我只想读取文本文件的最后一行 我在 UNIX 上 可以使用 Boost 我知道的所有方法都需要扫描整个文件才能获取最后一行 这根本没有效率 有没有一种有效的方法只获取最后一行 另外 我需要它足够强大 即使有问题的文本文件不断被另一个进程附加
  • 使用 c:foreach (JSP/JSTL) 迭代 ArrayList,变量不起作用

    我知道 关于我的问题有无数的例子 但我经历了很多 但无法弄清楚我的错误在哪里 我正在迭代 ArrayList TestSzenario TestSzenario 类包含一个名为 name 的字符串变量 具有适当的 getter 和 sett