1

在 PHP 中,我通常会这样做:

foreach(array('street','town','county','postcode') as $e) {
    echo $address[$e] . '<br/>';
}

它简洁且易于使用。有没有办法在 EL 中做到这一点?我很难找到一种干净利落的好方法。

4

2 回答 2

0

通常,您将填充地图或列表服务器端,然后使用 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>
于 2012-12-03T13:55:46.750 回答
0

在标准 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保持插入顺序)

于 2012-12-03T14:02:43.227 回答