2011-06-24 55 views
0

這與其他一些問題非常相似,但沒有人使用字符串鍵。所以,我們走了。通過JSTL中的字符串鍵訪問TreeMap條目

我有一個TreeMap有一組類別名稱,按類別ID鍵入。該ID是一個數字(作爲字符串)。

我建立了值樹狀圖,然後將其暴露在該頁面,就像這樣:

<% 
Map categories = new TreeMap(); 
... 
String categoryId = ...; 
String categoryName = ...; 
categories.put(categoryId, categoryName); 
... 
pageContext.setAttribute("categories", categories); 
%> 

後來,我通過一系列已分配到類別的項的迭代。每個項目都有一個.categories集合,其中包含已分配到的類別的ID。我想顯示名稱,所以我這樣做:

<c:forEach items="${item.categories}" var="catId"> 
    ${categories[「${catId}」} 
</c:forEach> 

不幸的是,這不會發出任何東西。也不${categories["${catId}"].value}.

然而,這並不:

${categories["2"]} 

當然,該行實際上不是由項目數據驅動。

我檢查過了,每個項目附加的ID實際上對應於類別ID;這不是數據不匹配問題。

那麼,當附加到物品的數據只有ID時,如何獲得類別名稱?

P.S.我應該提到,我不是一個Java程序員 - 根本就不是。燈是更多我的風格。所以修改類並不是真正的選擇。

回答

1

編輯:對不起,我誤讀了這個問題。

解開你的catId變量:

${categories[「${catId}」} 

應該

${categories[catId]} 

這應該修復它。

+0

不能這樣做。我不想顯示每個項目的主要類別列表,這是該代碼將執行的操作。我想要爲每個項目顯示它所屬的類別。該foreach必須迭代該項目的cateogries,與主列表交叉引用它們。 – Tom

+0

我可以發誓,我曾嘗試過,沒有運氣。但我猜不是,因爲你的代碼有效!非常感謝。 – Tom