gpt4 book ai didi

java - 如何通过对象键(而不是字符串)访问 JSP 中的 HashMap

转载 作者:行者123 更新时间:2023-12-04 06:01:46 25 4
gpt4 key购买 nike

我可以访问 HashMap<String, Object>在 JSTL 中很容易,但是否可以访问 HashMap<Object, Object>
我只是问,因为在尝试以下操作时我没有收到任何错误(或输出):

${myHashMap[anObject]}

这让我相信 myHashMap 试图找到我的值(value),但不知何故没有评估 anObject作为正确的 key 。我可以验证 myHashMap 有 anObject作为应显示的(非空/非空)值的键。

最佳答案

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

Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.

More formally, if this map contains a mapping from a key k to a value v such that (key==null ? k==null : key.equals(k)), then this method returns v; otherwise it returns null. (There can be at most one such mapping.)


换句话说,如果 equals()您的 ${anObject}返回 true对于 map 键,则返回关联的 map 值,否则 null将返回,然后 EL 将不打印任何内容。
它适用于 String仅仅是因为该类具有 equals() already正确实现。
也可以看看:
  • Right way to implement equals contract
  • 关于java - 如何通过对象键(而不是字符串)访问 JSP 中的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825837/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com