2012-12-03 41 views
1

在PHP中,我經常會做這樣的事情:EL定義陣列來輸出對象的屬性

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

很簡潔,易於使用。在EL中有這樣做的方法嗎?我很難找到一個乾淨利落的好方法。

回答

0

有沒有像在標準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才能維持廣告訂單)

+0

最上面的解決方案看起來與我所需要的最接近,但我應該明確說明,但我需要提取對象屬性而不是地圖元素。那可能嗎? – nfvindaloo

+0

它也適用於Javabean屬性。另請參閱下面的示例說明。 – BalusC

+0

這很好,謝謝! – nfvindaloo

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>