【问题标题】:traversing arraylist using EL using foreach使用 EL 使用 foreach 遍历 arraylist
【发布时间】:2012-12-10 07:16:48
【问题描述】:

我有一个类 language 具有 IDName 的功能。 我有另一个类 Language_ListArrayList<language> lang 作为成员变量。

在我的 JSP 页面中,我想使用 EL 和 For each Loop 访问 ArrayList<language> lang 的 Name 变量。

<c:forEach var="language" items="${languages.lang}">
  ${language}<br>
</c:forEach>

但是,它不显示 ant 结果,并且智能感知也不起作用。任何可以帮助我的人 PS:languages 是一个 Bean 变量,包含来自 DB 的语言列表 我试过了,得到了这个

 <b>${languages.lang}</b>
HTML

[sakila.language@f1541c, sakila.language@63c8fabf, sakila.language@1fc644c7, sakila.language@11cd751d, sakila.language@47c3cc0c, sakila.language@7894ca3, sakila.language@47066532, sakila .language@74ddda0b, sakila.language@1116441e, sakila.language@4cd21655, sakila.language@74b84dd9, sakila.language@6fff1d6c, sakila.language@55e4d6e5, sakila.language@22d88071, sakila.language@33d88c96, sakila.language @4df5e671, sakila.language@4aec2cb3, sakila.language@576ac232, sakila.language@76a6dbd7, sakila.language@44ab3d1c, sakila.language@46391c7c, sakila.language@4f7d34e8, sakila.language@251c941d, sakila.language@747 ]

【问题讨论】:

  • 在您的示例中,language 是一个变量,而不是一个类。为什么不让基类实现Iterable 并为元素提供正确的.toString() 实现?
  • @fge 在.tostring()的body里面应该怎么做,你想说不能用EL访问一个Arraylist?
  • 我不是说你不能访问它,我只是说如果数组是你类中唯一可迭代的东西,你不妨让类实现数组中元素的可迭代。至于.toString(),就看你想显示什么信息了。

标签: java jsp jakarta-ee foreach el


【解决方案1】:

EL 不访问对象的字段。它访问对象的 bean 属性。这意味着${languages.lang} 被转换为对languages.getLang() 的调用。

如果你没有这样的吸气剂,你会得到一个例外。如果它不显示任何内容,可能是因为languages 为空,或者因为它的lang 列表为空或为空。为了证实或证实这些猜测,我们需要查看您创建和填充 bean 及其语言列表的代码,以及您将其存储在何处以便从 JSP 访问它的位置。

另一种可能是您忘记在 JSP 的开头声明核心 taglib。要确认或确认,请粘贴 JSP 的代码,以及 JSP 生成的 HTML 代码(在浏览器中使用 查看页面源代码

【讨论】:

  • 我已经进行了编辑,并且 lang 变量不为空,因为我进行了调试。如果我使用 scriplets 我可以轻松遍历..
  • 所以,它远不是什么都不打印。如果你想让它显示一些有意义的东西,那么显示每个对象的内部属性,或者重写 Language 类中的toString() 方法。 (请将语言重命名为 Language。按照 Java 的约定,类总是以大写字母开头)。
猜你喜欢
  • 2023-03-04
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
相关资源
最近更新 更多