EL表达式怎么获取Map的动态key?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EL表达式怎么获取Map的动态key?相关的知识,希望对你有一定的参考价值。

参考技术A 在EL中,方括号运算符用来检索数组和集合的元素。对于实现 java.util.Map 接口的集合,方括号运算符使用关联的键查找存储在映射中的值。\\x0d\\x0a\\x0d\\x0a在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 $map[\'key\'] 返回与 map标识符所引用的 Map 中的 "key" 键相关联的值。 \\x0d\\x0a当forEach 的items属性中的表达式的值是java.util.Map时,则var中命名的变量的类型就是 java.util.Map.Entry。这时var=entry的话,用表达式$entry.key取得键名。用表达$entry.value得到每个entry的值。这是因为java.util.Map.Entry对象有getKey和getValue方法,表达式语言遵守JavaBean的命名约定。 \\x0d\\x0a map2 = new HashMap(); \\x0d\\x0amap2.put("a","hello world"); \\x0d\\x0amap2.put("b","this is map"); \\x0d\\x0arequest.setAttribute("map2",map2); \\x0d\\x0a%> \\x0d\\x0a
\\x0d\\x0a键值对遍历
\\x0d\\x0a \\x0d\\x0a$item.key > $item.value
\\x0d\\x0a
\\x0d\\x0a键遍历
\\x0d\\x0a \\x0d\\x0a$item.key
\\x0d\\x0a
\\x0d\\x0a值遍历
\\x0d\\x0a \\x0d\\x0a$item.value
\\x0d\\x0a
\\x0d\\x0a \\x0d\\x0a

\\x0d\\x0a list = new ArrayList(); \\x0d\\x0alist.add("first"); \\x0d\\x0alist.add("second"); \\x0d\\x0aList list2 = new ArrayList(); \\x0d\\x0alist2.add("aaaaaa"); \\x0d\\x0alist2.add("bbbbbb"); \\x0d\\x0aMap> map = new HashMap(); \\x0d\\x0amap.put("a",list); \\x0d\\x0amap.put("b",list2); \\x0d\\x0arequest.setAttribute("map",map); \\x0d\\x0a%> \\x0d\\x0a通过键获得列表值,并遍历列表
\\x0d\\x0a \\x0d\\x0a$item
\\x0d\\x0a

\\x0d\\x0a \\x0d\\x0a$item
\\x0d\\x0a

\\x0d\\x0amap中值为列表,直接遍历列表中的每一项
\\x0d\\x0a \\x0d\\x0a \\x0d\\x0a$it
\\x0d\\x0a
\\x0d\\x0a

EL11个内置对象

EL是JSP内置的表达式语言

JSP2.0开始,让再使用Java脚本,而是使用EL表达式和动态标签来代替Java脚本

EL替代的是<%=... %>,也就是说EL只能做输出

EL可以输出的东西都在11个内置对象中,11个内置对象,其中10个是Map,只有pageContext不是Map,它就是PageContext类型,EL所有内置对象如下:


pageScope:获取pageContext域属性,相当于pageContext.getAttribute("xxx")

 

requestScope:获取request域属性,相当于request.getAttribute("xxx")

 

sessionScope:获取session域属性,相当于session.getAttribute("xxx")

 

applicationScope:获取application域属性,相当于application.getAttribute("xxx")

 

param:对应参数,它是一个Map,其中key是参数,value是参数值,适用于单值的参数,相当于request.getParameter("xxx")

 

paramValues:对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数,相当于request.getParameterValues("xxx")

 

header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头,相当于request.getHeader("xxx")

 

 

headerValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头,相当于request.getHeaders("xxx")

initParam:获取web.xml中<context-param>内的参数,${ initParam.xxx},xxx就是<param-name>标签内的值,进而得到<param-value>中的值

cookie:用于获取cookie,Map<String,Cookie>,其中key是cookie的name,value是cookie对象,例如${cookie.JSESSIONID.value }就是获取sessionId

pageContext:可以获取JSP九大内置对象,相当于使用该对象调用getxxx()方法,例如pageContext.getRequest()可以写为${pageContext.request)


EL表达式在获取Map的值或Bean的属性值是,可以使用“点”的方法,也可以使用“下标”的方法。

${initParam.a}与${initParam[‘a‘]},它们是完成的东西相同的。但是,如果Map的键或Bean的属性名中包含下划线或横岗时,那么就必须使用“下标”方法,例如:${initParam[‘a_a‘]}



以上是关于EL表达式怎么获取Map的动态key?的主要内容,如果未能解决你的问题,请参考以下文章

EL表达式怎么获取Map集合中Key为int类型的Value值?

如何用EL表达式获取map的值

el表达式

EL表达式的11个内置对象

EL11个内置对象

JSP ELEL表达式 获取list长度/不用循环,EL在List中直接获取第一项的内容/EL获取Map的键,Map的值