如何通过Object键(而不是String)访问JSP中的HashMap

时间:2012-01-11 20:04:04

标签: java jsp el

我可以在JSTL中轻松访问HashMap<String, Object>但是是否可以访问HashMap<Object, Object>

我只是问,因为我在尝试以下操作时没有收到任何错误(或输出):

${myHashMap[anObject]}

这让我相信myHashMap正在尝试找到我的值,但它不知何地将anObject评估为正确的键。我可以验证myHashMap是否为anObject作为具有应显示的(非空/非空)值的键。

1 个答案:

答案 0 :(得分:3)

这种语法应该可行。我知道你没有得到任何给定对象的值作为键,尽管你确信所需的对象在那里?在这种情况下,代码中${anObject}后面的类必须正确实现equals()(和hashCode())方法。 Map#get()即通过equals()方法测试密钥。另见javadoc:

  

返回指定键映射到的值,如果此映射不包含键的映射,则返回null

     

更正式地说,如果此映射包含从键k到值v的映射,使得(key==null ? k==null : key.equals(k)),则此方法返回v;否则返回null。 (最多可以有一个这样的映射。)

换句话说,如果equals()的{​​{1}}为地图键返回${anObject},则会返回相关的地图值,否则会返回true然后EL将不打印任何内容。

适用于null只是因为该课程已正确实施String already

另见: