jsp页面如何使用“EL嵌套"
2016-02-02 00:00
621 查看
注意,我标题里面说的EL嵌套是不可能的,是肯定会报错的,实际上不需要EL嵌套是可以实现自己想要的结果的。
最近用spring mvc 加前台 jstl进行开发,发现后台加到modelMap里面的值前台取的时候可能会用到EL的嵌套,例如后台传了一个hashmap到前台,前台根据map的key值取对应的value,而key值又是用<c:foreach>某个list产生的,这个时候,我们可能会想到${map.get(${key})}这样的写法,这样写是肯定有问题的,我们不能这样写,不过EL很强大,对里面的参数进行解析时有时候会识别变量去解析其对应的值。
实际测试当中,通过map.get()这样的写法是可以取到值的,当然奇怪的是我有个同事的不知道什么版本的chrome浏览器直接报500错误了,而其他的同事都能正常显示值。
这个时候,我实在想不出什么好办法,只能用最原始的jsp中写java代码来实现所有的功能,这个我就不多讲了,给个例子大家看就明白了。
map的获取如下,我放在最上面了。通过c:set标签将所需要的key值放到request作用域中然后再从request中去取。可能有更好的实现办法,但是我实在是想不出来了。。
最近用spring mvc 加前台 jstl进行开发,发现后台加到modelMap里面的值前台取的时候可能会用到EL的嵌套,例如后台传了一个hashmap到前台,前台根据map的key值取对应的value,而key值又是用<c:foreach>某个list产生的,这个时候,我们可能会想到${map.get(${key})}这样的写法,这样写是肯定有问题的,我们不能这样写,不过EL很强大,对里面的参数进行解析时有时候会识别变量去解析其对应的值。
<c:foreach item=${list} var="object"> <c:set value="${object.id}" var="id"/> ${map.get(id)} </c:foreach>
实际测试当中,通过map.get()这样的写法是可以取到值的,当然奇怪的是我有个同事的不知道什么版本的chrome浏览器直接报500错误了,而其他的同事都能正常显示值。
这个时候,我实在想不出什么好办法,只能用最原始的jsp中写java代码来实现所有的功能,这个我就不多讲了,给个例子大家看就明白了。
<c:forEach items="${shippers}" var="shipper" varStatus="status"> <c:set value="${shipper.id}" var="shipperId" scope="request"/> <tr> <td> <% out.print(map.get(request.getAttribute("shipperId")) == null ? 0 : map.get(request.getAttribute("shipperId"))); %> </td> </tr> </c:forEach>
map的获取如下,我放在最上面了。通过c:set标签将所需要的key值放到request作用域中然后再从request中去取。可能有更好的实现办法,但是我实在是想不出来了。。
<% HashMap<Integer,Integer> map = (HashMap<Integer,Integer>)request.getAttribute("dealCountMap"); %>
相关文章推荐
- JS CORS
- js动态设置margin
- 中级JavaScript例子, 如何实现一个简单实用的模板套用机制, GXTemplate , 第2章(估计要写9章)
- 《mastering-javascripts-this》学习笔记
- 定时器的应用(一):延时提示框
- SSH项目开发中,将jsp页面放在WEB-INF的原因解析
- JS学习--常见弹出框
- String转换Json
- 定时器
- ExtJs表格控件(三)----单元格编辑与提交修改
- 读书笔记 JavaScript高级程序设计 第三章 基本概念-数据类型
- JavaScript第四课——数据类型(Number类型)
- JavaScript 使用
- Js As Ordinal
- JavaScript
- javascript实现端口扫描
- 读书笔记 JavaScript高级程序设计 第三章 基本概念-语法
- json学习篇
- JavaScript数据类型
- JavaScript——递归调用使用arguments.callee