1. 程式人生 > >EL表示式兩個foreach巢狀迴圈

EL表示式兩個foreach巢狀迴圈

集合List中加List泛型的泛型

  1. List<RiskEvaSuitQuestion> riskEvaSuitQuestionList = riskEvaSuitQuestionService.getQueList(1000036L);  
  2. model.addAttribute("riskEvaSuitQuestionList",riskEvaSuitQuestionList);  
  3. List<RiskEvaSelectItem> riskEvaSelectItemList;  
  4. <span>List<List<RiskEvaSelectItem>></span> riskEvaSelectItemLists = new
     ArrayList<>(); //雙重泛型的構建
  5. for (int i = 0; i < riskEvaSuitQuestionList.size(); i++) {  
  6.     riskEvaSelectItemList = riskEvaSelectItemService.getByQuestionId(riskEvaSuitQuestionList.get(i).getQuestionId());  
  7.     riskEvaSelectItemLists.add(riskEvaSelectItemList);  
  8. }  
  9.  model.addAttribute("riskEvaSelectItemLists"
    , riskEvaSelectItemLists);  

兩個foreach可以直接像if一樣巢狀用:


下面是一開始以為foreach不能嵌套出現的方法(看起來就頭疼):

  1. <c:forEach items="${riskEvaSuitQuestionList}" var="item" varStatus="i">   //第一個foreach
  2.    <p style="font-size: 15px;">${i.count}.${item.content}</p><br/>  
  3.    <p style="margin-right: 50px;">  
  4.    <c:forEach begin="1" end="${riskEvaSelectItemLists.get(i.count-1).size()}"   varStatus="j" step="1">   //第二個foreach
  5.      <input style="margin-left: 50px;margin-right: 40px;" name="itemContent${i.count-1}" type="radio" value="${riskEvaSelectItemLists.get(i.count-1).get(j.count-1).itemScore}">  
  6.      ${riskEvaSelectItemLists.get(i.count-1).get(j.count-1).itemContent}  
  7.    </c:forEach>  
  8.    </p><br/>  
  9. </c:forEach>  

注意:JavaScript中預設加分預設為字串相加,必須轉換為parseInt()

           往input標籤中寫值,直接定位該標籤,然後.value = 值

[javascript] view plain copy
  1. <script>  
  2.     function calculate() {  
  3.         // 題目的總數
  4.         var size = ${riskEvaSuitQuestionList.size()};  
  5.         var sum = 0;  
  6.         for(var i = 0;i < size;i++){  
  7.             var chkObjs = document.getElementsByName("itemContent"+i); // 巧用迴圈獲取radio名字
  8.             for(var j=0;j < chkObjs.length;j++) {  
  9.                 if (chkObjs[j].checked) {     // radio選中判斷.checked
  10.                     sum = parseInt(sum) + parseInt(chkObjs[j].value);  
  11.                     break;  
  12.                 }  
  13.             }  
  14.         }  
  15.         document.getElementById("evaScore").value = sum;  
  16.     }  
  17. </script>