一尘不染

将字符串与变量的值组合为EL中另一个变量的名称

jsp

我想做这样的事情:

<display:table name="${summary${index}}">

但是它不起作用并引发异常:“ $ {summary $
{selChrm}}”包含无效的表达式。我希望用户使用一个下拉列表来选择一个选项并放入变量索引。然后,该表将显示相应的javabean对象列表,即。名为summary01,summary02等。我该怎么做?提前致谢。


更新 :谢谢大家。问题在于嵌套EL。我尝试使用

<display:table name="summary${index}">

但是表中没有任何显示,因为summary01是变量名。如果我对变量名进行硬编码,它将起作用:

<display:table name="${summary01}">

因此,我该如何嵌套EL?如果不是在JSTL中,我如何实现用户可以使用下拉列表确定要在表中显示哪些内容的行为?再次感谢。


阅读 265

收藏
2020-06-08

共1个答案

一尘不染

您不能嵌套EL表达式。但是,您可以将它们串联起来。

<display:table name="${summary}${index}">

或者,如果${summary}实际上不是任何范围内的对象,请执行

<display:table name="summary${index}">

更新
:好的,您实际上需要访问${summary01}。如果事先知道范围,则可以使用大括号表示法访问它。想象一下,它的请求范围很广,您可以按以下方式“普通”访问它:

<display:table name="${requestScope['summary01']}">

但实际上,您也可以在花括号中使用另一个EL变量(只需将其取消引用):

<display:table name="${requestScope[summary]}">

因此,我们想将其设置在某个地方。JSTL c:set标签非常适合:

<c:set var="summary" value="summary${index}" />
2020-06-08