我试图在另一个变量中使用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}
答案 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();