我可以在JSTL中轻松访问HashMap<String, Object>
但是是否可以访问HashMap<Object, Object>
我只是问,因为我在尝试以下操作时没有收到任何错误(或输出):
${myHashMap[anObject]}
这让我相信myHashMap正在尝试找到我的值,但它不知何地将anObject
评估为正确的键。我可以验证myHashMap是否为anObject
作为具有应显示的(非空/非空)值的键。
答案 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。