在EL中,方括号运算符用来检索数组和集合的元素。对于实现 javautilMap 接口的集合,方括号运算符使用关联的键查找存储在映射中的值。
在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 ${map['key']} 返回与 map标识符所引用的 Map 中的 "key" 键相关联的值。
当forEach 的items属性中的表达式的值是javautilMap时,则var中命名的变量的类型就是 javautilMapEntry。这时var=entry的话,用表达式${entrykey}取得键名。用表达${entryvalue}得到每个entry的值。这是因为javautilMapEntry对象有getKey和getValue方法,表达式语言遵守JavaBean的命名约定。
<%
Map<String,String> map2 = new HashMap();
map2put("a","hello world");
map2put("b","this is map");
requestsetAttribute("map2",map2);
%>
<br>
键值对遍历 <br>
<c:forEach var="item" items="${map2}">
${itemkey} > ${itemvalue} <br>
</c:forEach>
键遍历 <br>
<c:forEach var="item" items="${map2}">
${itemkey}<br>
</c:forEach>
值遍历 <br>
<c:forEach var="item" items="${map2}">
${itemvalue}<br>
</c:forEach>
<body>
<br><br>
<%
List<String> list = new ArrayList<String>();
listadd("first");
listadd("second");
List<String> list2 = new ArrayList<String>();
list2add("aaaaaa");
list2add("bbbbbb");
Map<String,List<String>> map = new HashMap();
mapput("a",list);
mapput("b",list2);
requestsetAttribute("map",map);
%>
通过键获得列表值,并遍历列表 <br>
<c:forEach var="item" items="${map['a']}">
${item }<br>
</c:forEach><br>
<c:forEach var="item" items="${map['b']}">
${item }<br>
</c:forEach> <br>
map中值为列表,直接遍历列表中的每一项 <br>
<c:forEach var="item" items="${map}">
<c:forEach items="${itemvalue}" var="it">
${it }<br>
</c:forEach>
</c:forEach>
你这不是strust1么
requestsetAttribute("form", dynaActionForm);
只要保证dynaActionForm里面name是有值的。
页面${formname} 是没错的
另外你el表达式是写在javaScript里面的 还是写在body里的 js里面用el要加双引号
首先El使用了本质相同的,但是名字不同的jsp内置对象,如默认变量 pageContext
默认变量 initParam
默认变量 cookie
默认变量 param 、 paramValues
默认变量 pageScope 、 requestScope 、 sessionScope 、 applicationScope
如果你想在<% % 获取变量,JSP已经有内置request(EL中异requestScope)对象获取,
所以之间使用request对象获取。
你是怎么获取的?
可以使用 ${} 获取
可以使用 '<%=requestgetAttribute("")%>' 获取
EL表达式
关键字: el表达式
一个EL表达式包含变量和 *** 作符。任何存储在某个JSP作用范围(如:page、 request、session、application)的bean能被作为一个EL变量来使用。另外,EL支持以下预定义的变量:
变量名称
说明
pageScope
一个包含所有page scope范围的变量集合 (a javautilMap)
requestScope
一个包含所有request scope范围的变量集合 (a javautilMap)
sessionScope
一个包含所有session scope范围的变量集合 (a javautilMap)
applicationScope
一个包含所有application scope范围的变量集合 (a javautilMap)
param
一个包含所有请求参数的集合 (a javautilMap),通过每个参数对应一个String值的方式赋值
paramValues
一个包含所有请求参数的集合 (a javautilMap),通过每个参数对应一个String数组的方式赋值
header
一个包含所有请求的头信息的集合, (a javautilMap) ,通过每个头信息对应一个String值的方式赋值
headerValues
一个包含所有请求的头信息的集合 (a javautilMap) ,通过每个头信息的值都保存在一个String数组的方式赋值
cookie
一个包含所有请求的 cookie集合 (a javautilMap), 通过每一个cookie(javaxservlet>
你要明白el表达式是在什么时候执行的
el表达式实际上是java代码, 即jsp里的java代码, 是servlet执行的
也就是说, 后台看到el表达式的时候就执行了, 然后用执行的结果代替这个el表达式, 然后再返回给前台
你写alert("${endtimeMap['8']}");
后台看到的是就是${endtimeMap['8']}这个东西, 然后计算从map里得到对应的值, 代替则个东西, 所以你到前台看到的实际上是map里的值了
如果你写alert("${endtimeMap['"+ff+"']}");, 后台看到的是${endtimeMap['"+ff+"']}, 你觉得后台能把这个解析成什么, 后台会认为你是取map里key值为"\"+ff+\""的value(你要是不信, 你给你的map里添一组这个key-value)
归根结底还是执行顺序的问题, el表达式是servlet是后台执行的, js是得到response后在前台执行的, el优先于js, 你的想法是js先把值穿进去, 然后el表达式再得值, 所以必须不正确了
这样说你应该明白了吧
以上就是关于EL表达式怎么获取Map的动态key全部的内容,包括:EL表达式怎么获取Map的动态key、el表达式取request的值、在JSP中怎样将EL表达式获得的值赋给Java变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)