嵌套的JSTL变量名?可能吗?

时间:2014-06-27 13:34:03

标签: java jstl jsp-tags displaytag

我试图在另一个变量中使用JSTL变量。下面的代码将更好地解释它。

 <display:table id="resultsRow" name="${actionBean.list}" >                                                         

       <c:forEach items="${actionBean.anotherList}" var="columnName">

          <display:column sortable="true" property="${resultsRow.${columnName}"/>

       </c:forEach>

 </display:table>

所以基本上我将一个列表传递给显示表标签“name =”$ {actionBean.list}“。然后我使用display table标签的id属性循环遍历列表对象(id =”resultsRow“ )。

现在对于列属性属性,我需要访问列表对象中的不同属性。这是使用for:each为我提供的所有对象属性名称。如果你想知道它为什么实现这个而不仅仅是列,那是因为我使用的是DynaBean对象而且属性是动态的。

问题:我是否可以使用嵌套的可修改名称,就像我在显示列标记属性属性中所做的那样?

我需要: 1)评估columnName并获取一个值(假设我得到“价格”字符串) 2)将此值连接到我们的变量($ {resultsRow.price}) 3)执行$ {resultsRow.price}

2 个答案:

答案 0 :(得分:1)

正如this回答中提到的那样,您应该能够使用括号表示来访问动态&#39;像这样的属性:

<display:table id="resultsRow" name="${actionBean.list}">                                                         

   <c:forEach items="${actionBean.anotherList}" var="columnName">

      <display:column sortable="true" property="${resultsRow[columnName]}"/>

   </c:forEach>

</display:table>

答案 1 :(得分:0)

来自el代码信息page

  

您可以使用所谓的大括号[]来通过动态名称访问属性,通过包含句点的键访问地图值,使用名称/键,这些名称/键本身是Java中保留的文字并访问数组或按索引列出项目。

${sessionScope[dynamicName]}
${someMap[dynamicKey]}
${someMap['key.with.periods']}
${some['class'].simpleName}
${someList[0].name}
${someArray[0].name}
  

上述内容基本上与

相同
session.getAttribute(dynamicName);
someMap.get(dynamicKey);
someMap.get("key.with.periods");
some.getClass().getSimpleName();
someList.get(0).getName();
someArray[0].getName();