【问题标题】:How to nest an EL expression in another EL expression如何将一个 EL 表达式嵌套在另一个 EL 表达式中
【发布时间】:2013-03-13 14:58:59
【问题描述】:

我正在编写 JSP / JSTL,并且我正在尝试遍历数据库中的多个项目。

我目前在数据库中有三列,${image1}${image2}${image3}。我正在尝试使用以下代码为他们打印信息:

<c:forEach begin="1" end="3" var="i">
  ${image${i}}
</c:forEach>

我有什么办法可以完成这项工作吗?

【问题讨论】:

  • IMO 这类工作属于 Java 端:将它们放入一个集合中。

标签: jsp jstl el


【解决方案1】:

我可以通过将嵌套表达式放在括号 () 中来创建嵌套表达式 请参阅下面的示例..

#{row.Dateapproved eq null ? 'true' : (row.Appealrange &gt; (bindings.Appealvalidation.inputValue) ? 'true' : 'false') }

【讨论】:

  • 这不是嵌套表达式,而是普通表达式。
【解决方案2】:

你不能像这样嵌套 EL 表达式。

只有事先知道这些变量的范围,才能实现具体的功能需求。这样,您可以在直接访问范围映射时使用大括号表示法。您可以使用&lt;c:set&gt; 在EL 范围内创建一个由多个变量组成的新字符串变量。您可以使用例如${requestScope} 访问请求范围变量的映射。

因此,如果您确实将这些变量存储在请求范围内,那么应该这样做:

<c:forEach begin="1" end="3" var="i">
    <c:set var="image" value="image${i}" />
    ${requestScope[image]}
</c:forEach>

对于会话范围,请改用 ${sessionScope} 映射。

另见:

【讨论】:

  • 也许还有:${requestScope[image.concat(i)]},我在类似的情况下使用了类似的东西。
猜你喜欢
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多