2013-02-20 40 views
1

我需要根据条件检索jsp中Map <String, String>类型的地图的值。条件是将映射关键字与变量进行比较,如果关键字等于变量,则显示与该关键字有关的值。下面是我在做什么:比较地图键与某些元素,并根据结果显示其值

<c:if test="${ myMap.key eq myVariable }"> 
<jsp:getvalueof var="testVariable" value = "${ myMap.value }" /> 
</c:if> 

我所希望得到的是,如果myMap.key等于MYVARIABLE,我应该得到有关在“测试”变量键的值。

但这个东西不起作用。请有任何想法的人吗?

感谢提前:)

+0

的[JSTL访问由键映射值]可能重复(http://stackoverflow.com/questions/924451/jstl-access-a-map-value-by-key) – 2013-02-20 12:36:00

+0

没有在发布之前,我经历了这些,但无法找出解决方案。 – 2013-02-20 12:41:25

回答

3

您可以直接访问地图,并获得价值变成了“测试”变量:

<c:set var="test" value="${myMap[myVariable]}"/> 
+0

谢谢。雅,我知道,但我需要设置值的“测试”变量基于条件的关键。因此,获取关键字并将其与某些变量进行比较是一个问题。 – 2013-02-20 12:48:10

+1

只是为了澄清一点,你所说的比较不是一个简单的“平等”,对吧?因为如果是这样,这就是地图访问者正在做的事情。 – 2013-02-20 12:53:59

+0

功能要求是,我需要根据密钥是否等于变量从此映射中获取值。例如:让我说我的钥匙是“美国”,“英国”和“印度”,所以我想比较这些关键与一个名为“国家”的变量,如果它匹配需要显示的地图的值是URL为该国的网站。 – 2013-02-20 12:59:05

0
//use like this in jsp 
<% 
String val; 
for(String key : myMap.keyset()){ 
    if(key.equals(myVariable)){ 
     val = myMap.get(key); 
    } 
} 
%> 
//on js use like this 
var test = '<%=val%>'; 
+0

这应该工作我猜,但我们不能不使用scriptlet吗? – 2013-02-20 12:50:08

0

因为,你想从地图检索值根据条件,您可以改用三元运算符。试试这个:

<c:set var="testVariable" value='${ myMap.key eq myVariable ? myMap[myVariable] : "defaultValue" }'/> 
+0

感谢您的解决方案。但我想弗朗西斯科提出的建议是解决问题的最简单和最好的方法。 – 2013-02-20 14:12:27