2011-03-10 26 views
3

我在我的JSP中使用了JSTL/Struts2/DisplayTag標記庫的Struts 2應用程序。有沒有辦法在給定密鑰的JSP中訪問Map的值?如何在JSP中給定一個鍵的Map值?

// Action code 
Map<String,String> map = new HashMap<String,String>(); 

mapOnValueStack = map; 

//add key/value pairs 

fieldKeyOnValueStack = "1";//sets key 

....

<%-- JSP code --%> 

<s:property value="%{mapOnValueStack.get(fieldKeyOnValueStack)}" /> 

基本上我想要做的JSP中地圖的訪問。 這可能嗎?

謝謝!

+0

的'%{}'事(稱爲OGNL)並不特定於JSP/JSTL。它們特定於Struts2。因此,對於非Struts2開發人員來說,這個問題非常混亂,因爲「嘗試這個」答案可能根本不正確。在普通的JSP中,你可以使用EL'$ {mapOnValueStack [fieldKeyOnValueStack]}來實現這一點。然而,你的代碼示例並沒有提供這些變量在正常的JSP EL範圍中可以用'$ {mapOnValueStack}'和'$ {fieldKeyOnValueStack}。 – BalusC 2011-03-10 20:46:53

+0

感謝您的意見,但我在問題中聲明它是一個Struts 2應用程序,並且我使用JSTL,Struts 2和Display Tag庫。那麼,我假設有人回答這個問題就知道他們之間的區別。 '%{mapOnValueStack.get(fieldKeyOnValueStack)}'僅在Struts 2標籤中是正確的。這只是我想表達的一個例子。 – Nick 2011-03-10 22:46:15

回答

7

你有沒有嘗試這個辦法:

<s:property value="%{mapOnValueStack.['fieldKeyOnValueStack']}" /> 
+0

哦,你好。我認爲這將工作正常。謝謝。 – Nick 2011-03-10 22:42:08

+2

「[? – Gray 2015-08-28 16:11:28

-4

試試這個

<c:forEach var="entry" items="${mapOnValueStack}"> 
    Name: ${entry.key} <br/> 
    Value: ${entry.value} 
</c:forEach> 

希望它會工作。

+0

謝謝,但我一直在尋找一種方法,通過它的密鑰訪問地圖中的值。該解決方案遍歷所有鍵/值對,並且不區分鍵。 – Nick 2011-03-10 22:41:52

4

如果您已在行動中使用此,

Map<String,Integer> headerMap=new HashMap<String, Integer>(); 
headerMap.put("INITIATED", 0); 
headerMap.put("COMPLETED", 0); 
headerMap.put("SUBMITTED", 0); 
headerMap.put("APPROVED", 0); 
headerMap.put("TRAFICKED", 0); 
headerMap.put("REJECTED", 0); 

然後在你的JSP使用,

<s:property value="%{headerMap.INITIATED}" /> 
<s:property value="%{headerMap.REJECTED}" /> 
+1

爲我工作謝謝 – 2014-04-17 12:46:24

2

試試這個

<s:property value="%{mapOnValueStack['fieldKeyOnValueStack']}" /> 
相關問題