English 中文(简体)
查阅地图<Enum>,目标载于JSTL
原标题:Access Map<Enum, Object> in JSTL
  • 时间:2009-10-11 23:25:30
  •  标签:

我已:

public enum MyEnum{
    One, Two, Three
}

我从控制者处介绍了这一模式:

HashMap<MyEnum, Long> map = new HashMap<MyEnum, Long>();
map.put(MyEnum.One, 1L);
mav.addObject( "map", map);

我如何在联合后勤中心查阅MyEnum关键人物地图中的标语。 一种是,用什么方法?

${map[ One ]} //does not seem to work...

或者

${map[MyEnum.One]}
最佳回答

你们可以 t。 您的最好之点是改变您的地图,以便把名称作为关键:

HashMap<String, Long> map = new HashMap<String, Long>();
map.put(MyEnum.One.name, 1L);
map.addObject( "map", map);

之后,你的第一个做法是:

${map[ One ]} // works now

或者,如果你不想改变地图,你可以写出一种习惯的EL功能,为你做上述工作。

问题回答

这不是你能够做的,而是解决办法没有完全的开端。 问题在于,EL没有将你所穿的座子转换成对你相应座标的地图,因此,将“imap[一个]}”不使用“MyEnum”的 constant。 地图调查中有一个。

我也谈到同样的问题,并不想再回头来,看看看一个强硬的地图,因此,当时的挑战是,联合后勤公司如何在地图调查中实际提及使用。

所需要的是使Enum的常数进入共同财产制的范围,以便你能够把实际的Enum本身作为关键。 为此,在控制者中,你做的是:

for (MyEnum e : MyEnum.values()) {
  request.putAttribute(e.toString(), e);
}

你在这里做些什么,在称为“大体”的表述范围中增加了变量。 (当然,通过预先安排具有一定价值的电子对称问题)

现在,当你做以下工作时:

${map[ONE]}

你们将使用实际不变值作为关键,从而从地图上收回适当的相应价值。 (请注意,在一份备忘录中,没有引证,也就是说,你在提及请求时将第1号归为上文)。

我通常使用这一解决办法:

<%@page import="my.package.MyEnum"%>
<c:set var="One" value="<%=MyEnum.One %>" />
<c:set var="MyEnum_values" value="${map[One]}" />

首先,我进口。 然后,我把我想要的面值节省到联合后勤公司变量中。 然后,我可以把这一变量作为钥匙进入地图。

${map[MyEnum.One]}

它为我工作。 但你必须写上你那类人的全名:我的包装。 MyEnum或进口MyEnum阶级:

<%@page import="my.package.MyEnum"%>




相关问题
热门标签