如果是这样,我觉得应该是Spring创建了一个map的实现,重载了get方法,把参数key都变成大写或者小写。

解决方案 »

  1.   

    有方法倒也有方法,但不推荐使用首先看一下生成出map的实现类,重写那个实现类就可以了但由于改的是java基类的源代码,风险很大的
      

  2.   

    确实用得是Apache的Commons Collections包
    org.apache.commons.collections.map.ListOrderedMap。
      

  3.   


    瞎说,Spring用的是自己封装的Map:org.springframework.util.LinkedCaseInsensitiveMap,基于java.util.LinkedHashMap封装的。
      

  4.   

    是的,LinkedCaseInsensitiveMap有一个成员变量Map caseInsensitiveKeys,小写后的Key与真实key的映射关系,get的时候先把你传入的key转小写得到真实的KEY,然后得到对应value,所以大小写不敏感了。
    但其实key还保持本色的,所以如果序列化为json或者xml格式,key是大写,这是需要注意的。    public Object put(String key, Object value)
        {
            caseInsensitiveKeys.put(convertKey(key), key);
            return super.put(key, value);
        }    public Object get(Object key)
        {
            if(key instanceof String)
                return super.get(caseInsensitiveKeys.get(convertKey((String)key)));
            else
                return null;
        }