el表达式动态获取map的key

缘由 

  El表达式在调用Map的时候,后台传过来的Map的key不一定是一个固定的值,需要根据另外一个对象的id作为key来put,或者更加复杂的组合id+"string"作为一个key,对于平常使用开固定的key的我来说,以前学过也忘记了,一时想不出怎么做,现在我们来复习一下。

 

情景

 

  假设有一个情景:我们后台返回一个对象的list,我们根据对象的id作为key放一些关键的值作为value存入Map中。而前台负责显示Map中的关键指标。

@RequestMapping(value="/test")
public String test(Model m){
      List<Student> lists = service.getAll();
      Map<String,String> map = new HashMap<String,String>();

      for(Student s : lists){
          if(s.getScore() > 80)
              map.put(s.getId(),"良");
     }

      m.addAttribute("lists", lists);
      m.addAttribute("map", map);   
      
      return "index";  
}

没错,我们的目的就是将大于80分的同学显示评级为良。接下来是前端的处理。

  先引入,标签。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table>
    <tr>
      <td>姓名</td>
      <td>分数</td>
      <td>评级</td>
    </tr>
    <c:forEach items="${lists }" var="s">
        <tr>
            <td>${s.name }</td>
            <td>${s.score}</td>
            <td>${map[s.id]}</td>
        </tr>
    </c:forEach>
</table>

 

大概就是这样子。如果map的key是一个复杂的组合,例如map(s.getId()+"-3班","良");这样子要怎么获取key呢?同样是上面的代码:

 

<table>
    <tr>
      <td>姓名</td>
      <td>分数</td>
      <td>评级</td>
    </tr>
    <c:forEach items="${lists }" var="s">
    <c:set var="sid" value="${s.id }${-3班}"></c:set>
        <tr>
            <td>${s.name }</td>
            <td>${s.score}</td>
            <td>${map[sid]}</td>
        </tr>
    </c:forEach>
</table>

 

 如果要对字符串做更复杂的操作,可以自己做标签库,或者使用<%@  taglib  uri="http://java.sun.com/jsp/jstl/functions"   prefix="fn"%>这个标签库。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值