2013-07-11 29 views
1

我有一個jsp頁面,在此頁面中,我從請求屬性中獲取哈希映射,並且我想提取特定鍵的值。關鍵是在jsp上可用。我怎樣才能使用這個鍵從地圖中提取值?如何使用jsp中的鍵獲取java map中的值,但key是javascript值

我通過將java映射轉換爲java腳本關聯數組解決了這個問題,然後我可以從該數組中獲取值。我想分享代碼:

<% 
Map<String,String> currencyCodeMap = (Map<String,String>)application.getAttribute("currPrecisionCodeMap"); 
%> 

<script language="javascript"> 


     var map = new Array(); 
     <% 
     for (Map.Entry<String, String> entry : currencyCodeMap.entrySet()) {%> 
       map['<%=entry.getKey()%>'] = '<%=entry.getValue()%>'; 
     <%} 
     %> 

var currencyCode = document.AccForm.currencyname.options[document.AccForm.currencyname.selectedIndex].text; 

    alert(map[currencyCode ]);// gives value 

</script> 

上面的代碼工作正常,但可以有人提供更好的解決方案?

+2

爲什麼你就不能從 「currencyCodeMap」 訪問JSP中的屬性側?將JSP和JavaScript混合在一起是非常麻煩的; JSP完全能夠從Map實例中提取值。 – Pointy

+0

我希望你知道這一點:http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files –

+0

因爲你已經在使用scriptlet,那你爲什麼不重複映射並在scriptlet本身中獲取所需的值。 –

回答

0

如果我理解你的問題的權利,你已經在JSP中使用初始化你的hashmap,比使用JSTL你可以迭代它。

<jsp:useBean id="hm" type="java.util.Hashtable<java.lang.Long, java.util.ArrayList<java.lang.String>>" scope="request"/> 

<c:forEach items="${hm[key]}" var="item"> 
    <c:out value="${item.value}" /> 
</c:forEach> 

此外,還可以採取以下行動:

pageContext.setAttribute("key", your_key); 

,比JSTL使用它:

${your_key} 
相關問題