jsp之jstl 解析Map


開發項目中,遇到一個需求,大致要達到的效果如此

有一個user對象,里頭有個list<map<Stirng,String>>的屬性

現在在遍歷user的同時,來遍歷解析這個map,由於需要取出map的key和vlaue,問過德哥(一同事)曰無法解析到map的Key

讓我是在無語

之后采用腳本的方式解析

代碼如下

 1     <select name="classify" id="classify" data-mini="true">
 2                                 <option>
 3                                     請選擇
 4                                 </option>
 5                                 <%
 6                                     for (Iterator iterator = classifyList.iterator(); iterator
 7                                             .hasNext();) {
 8                                         FlowWorkTreeInfo parent2 = (FlowWorkTreeInfo) iterator.next();
 9                                 %>
10                                 <optgroup label="<%=parent2.getText()%>">
11 
12                                     <%
13                                         List<FlowWorkTreeInfo> child = parent2.getChildTree();
14                                             if (ListUtils.isNotEmpty(child)) {
15                                                 for (Iterator iterator2 = child.iterator(); iterator2
16                                                         .hasNext();) {
17                                                     FlowWorkTreeInfo c = (FlowWorkTreeInfo) iterator2
18                                                             .next();
19                                     %>
20                                     <option value="<%=c.getId()%>"
21                                         <%if(c.getId().equals(info.getClassify())){%>
22                                         selected="selected" <%} %>><%=c.getText()%></option>
23                                     <%
24                                         }
25                                             }
26                                     %>
27                                 </optgroup>
28                                 <%
29                                     }
30                                 %>
31                             </select>

不需要深入了解其中的對象表示的意義,但是大致明白到頁面是如此的不堪

再次調戲了度娘,發現是可以達到這個需求的,順便鄙視下德哥,誤導了偶^-^

這里簡化下代碼

java部分

 1 public class User {
 2     
 3     private String username;
 4     private String userid;
 5     private List<User>userList;
 6     private Map<String , String>map;
 7 
 8 //此處省去set和get方法
 9 
10 }
 1 List<User>list=new ArrayList<User>();
 2         List<User>list2=new ArrayList<User>();
 3         for (int i = 1; i < 4; i++) {
 4             User user=new User()
 5             ;
 6             user.setUserid(""+i);
 7             user.setUsername("name_"+i);
 8             for (int j = 2; j < 4; j++) {
 9                 User user2=new User()
10                 ;
11                 Map map1=new HashMap<String, String>();
12                 map1.put("v", 88);
13                 user2.setMap(map1);
14                 user2.setUserid(""+i+"_"+j);
15                 user2.setUsername("name_"+i+"_"+j);
16                 list2.add(user2);
17             }
18             Map map=new HashMap<String, String>();
19             map.put("v", i);
20             user.setMap(map);
21             user.setUserList(list2);
22             list.add(user);
23             
24             
25         }
26         request.setAttribute("list", list);

JSP解析

 1 <div style="width: 100%" >
 2        <c:forEach items="${list}" var="users">
 3            <div style="background-color: red;">${users.username } --${users.map.v} </div>
 4            <c:forEach items="${users.map}" var="m">
 5                <div style="background-color: yellow;">${m.key }--${m.value }</div>
 6                
 7                </c:forEach>
 8            <c:forEach items="${users.userList}" var="user">
 9                <div style="background-color: blue;">${user.username }--${user.map.v }</div>
10                
11                </c:forEach>
12        </c:forEach>
13    </div>

效果圖

這里順便提一句,由於是demo,所以沒有對變量的命名等一些java的規范進行約束,希望朋友,特別是初學者仍然可以堅持規范

${processDefinitionMap[processDefinitionId].name}  --processDefinitionMap表示一個Map processDefinitionId是一個對象,name則是processDefinitionId的

一個屬性

附雙層迭代map的代碼

<c:forEach var="firstMap" items="${map}">
   <c:forEach var="secondMap" items="${firstMap.value}"> //${firstMap.value}為第一層map的值
        <c:out value="${secondMap.key}"/> //第二層map的鍵    
    <c:out value="${secondMap.value}"/>  //第二層map的值        
    </c:forEach>
</c:forEach>

先到此吧,需要去修改惡心的腳本了

還有偶滴android 哥來鳥!!

 


免責聲明!

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



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