• 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"%>这个标签库。

       

  • 相关阅读:
    Mysql 数据库高级
    Mysql 数据库
    并发编程
    网络编程
    1113
    1112
    P相遇游戏
    中位数
    PETS
    打暴力程序的正确做法
  • 原文地址:https://www.cnblogs.com/ginponson/p/5058935.html
Copyright © 2020-2023  润新知