在 PHP 中,我通常会这样做:
foreach(array('street','town','county','postcode') as $e) {
echo $address[$e] . '<br/>';
}
它简洁且易于使用。有没有办法在 EL 中做到这一点?我很难找到一种干净利落的好方法。
通常,您将填充地图或列表服务器端,然后使用 JSTL 将它们输出到您的 JSP 上,每个循环如下所示:
<c:forEach items="${formBean.myMap}" varStatus="itm">
<tr>
<td>${itm.key.propertyName}</td>
<td>${itm.value.propertyName}</td> <!--which is same as below ... -->
<td>${formBean.myMap[itm.key].propertyName}</td>
</tr>
</c:forEach>
在标准 JSTL/EL 中没有类似的东西,但您可以使用JSTL fn:split()
将单个分隔字符串拆分为数组:
<c:forEach items="${fn:split('street,town,county,postcode', ',')}" var="e">
${address[e]}<br/>
</c:forEach>
(前提是${address}
指向Map
具有给定值作为键的 a 或具有给定属性的 Javabean)
或者,如果${address}
确实 a已经只Map
包含这些键,您也可以只循环自身:Map
<c:forEach items="${address}" var="entry">
${entry.value}<br/>
</c:forEach>
(上面示例中的映射键可以由 打印${entry.key}
;另请注意,您需要LinkedHashMap
保持插入顺序)