jsp页面如何使用“EL嵌套"

来源:互联网 发布:kali windows 双系统 编辑:程序博客网 时间:2024/05/17 19:16

注意,我标题里面说的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");%>


0 0
原创粉丝点击