如何在另一个EL表达式中嵌套EL表达式

时间:2013-03-23 22:04:14

标签: jsp jstl el

我正在编写JSP / JSTL,我正在尝试迭代数据库中的几个项目。

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

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

有什么方法可以让我的工作吗?

2 个答案:

答案 0 :(得分:7)

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

只有事先知道这些变量的范围,才能达到具体的功能要求。这样,您可以在直接访问范围映射时使用括号表示法。您可以使用<c:set>在由多个变量组成的EL范围中创建新的字符串变量。你可以用例如${requestScope}访问请求范围变量的映射。

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

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

对于会话范围,请改用${sessionScope}地图。

另见:

答案 1 :(得分:0)

我能够通过将嵌套表达式放在括号()中来创建嵌套表达式 见下面的例子..

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