您的位置:首页 > Web前端 > JavaScript

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很强大,对里面的参数进行解析时有时候会识别变量去解析其对应的值。

<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");
%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: