2009-06-06 77 views
1
<c:set var="nameLookup" value="${names}" /> 
<c:forEach var="result" items="${results}"> 
    <tr>   
     <td>${result.uglyDisplayName}</td> 
     <td>${result.phonenum}</td> 
    </tr> 
</c:forEach> 

這是我試圖編輯的jsp的摘錄。在jsp中使用java對象

結果是List<Object>從ModelAndView中從控制器返回,其中每個Object都有一個getUglyDisplayNamegetPhonenum。我實際上並不清楚這是如何工作的。我猜jsp正在做一些getClass().getName()或幕後的事情?在這個過程中的任何指針都是有啓發性的。無論如何,這部分工作。

在控制器中,我添加了另一個要在ModelAndView中返回的對象。這是一個HashMap,它具有更好的顯示名稱,其中醜陋的顯示名稱是鍵。所以我想用這樣的東西來替換第一個TD:

<td>${nameLookup.get(result.uglyDisplayName)}</td> 

這顯然不起作用,或者我不會在這裏發帖。我繼續前進,並設置了一個名稱,我把HashMap放在ModelAndView下(頂線),但我不確定這是否是正確的方式來獲取該對象。

+0

我已經修復了格式:請參閱http://stackoverflow.com/editing-help – 2009-06-06 19:19:22

回答

2

對於第一部分(「JSP正在做什麼」),請參閱JSP Expression Language

對於第二部分,嘗試:

<td>${nameLookup[result.uglyDisplayName]}</td> 

我不希望發誓它會工作(這是因爲我用JSP很長一段時間),但它是值得一試。

+1

Jon是,正如他傾向於的那樣,是正確的。請注意,已經爲JSR 245(JEE6/JSP 2.1容器)實現了非靜態方法調用。所以,在不久的將來,像這樣的調用將是有效的:nameLookup.get(result.uglyDisplayName) – McDowell 2009-06-06 20:28:25