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"%>這個標簽庫。

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM