EL定义数组以输出对象属性

时间:2012-12-03 13:47:54

标签: spring jsp el

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

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

简洁易用。有没有办法在EL中这样做?我很难找到一个干净利落的好方法。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

在标准JSTL / EL中没有类似的东西,但您可以使用JSTL fn:split()将单个分隔的字符串拆分为数组:

<c:forEach items="${fn:split('street,town,county,postcode', ',')}" var="e">
    ${address[e]}<br/>
</c:forEach>

(前提是${address}指向具有给定值的Map作为键或具有给定属性的Javabean

或者如果${address}确实是Map,其中只包含 那些键,您也可以循环遍历Map本身:

<c:forEach items="${address}" var="entry">
    ${entry.value}<br/>
</c:forEach>

(以上示例中的地图键可以由${entry.key}打印;另请注意,您需要LinkedHashMap才能维持广告订单顺序)