在PHP中,我經常會做這樣的事情:EL定義陣列來輸出對象的屬性
foreach(array('street','town','county','postcode') as $e) {
echo $address[$e] . '<br/>';
}
很簡潔,易於使用。在EL中有這樣做的方法嗎?我很難找到一個乾淨利落的好方法。
在PHP中,我經常會做這樣的事情:EL定義陣列來輸出對象的屬性
foreach(array('street','town','county','postcode') as $e) {
echo $address[$e] . '<br/>';
}
很簡潔,易於使用。在EL中有這樣做的方法嗎?我很難找到一個乾淨利落的好方法。
有沒有像在標準JSTL/EL,但你可以使用JSTLfn:split()
到單個分隔的字符串分割爲一個數組:
<c:forEach items="${fn:split('street,town,county,postcode', ',')}" var="e">
${address[e]}<br/>
</c:forEach>
(條件是${address}
點與給定的值作爲密鑰或一個Javabe一個Map
一個給定的屬性)
或者,如果${address}
確實是一個Map
包含只有這些鍵已經,你也可以只在Map
本身的循環:
<c:forEach items="${address}" var="entry">
${entry.value}<br/>
</c:forEach>
(地圖鍵可以在上面的例子中打印${entry.key}
;還需要注意的是,您需要LinkedHashMap
才能維持廣告訂單)
通常,您將使用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>
最上面的解決方案看起來與我所需要的最接近,但我應該明確說明,但我需要提取對象屬性而不是地圖元素。那可能嗎? – nfvindaloo
它也適用於Javabean屬性。另請參閱下面的示例說明。 – BalusC
這很好,謝謝! – nfvindaloo