大家好,最近在開發專案中接觸到迭代 iterator
前端透過迭代將list中的值秀出來
但最近需要開發加總欄位
也就是將前面的值給加總,但必須根據月份
前端頁面如圖 目前就是需要開發(加總)欄位
.jsp程式碼
<table width="90%" align="center">
<tr>
<th class="C" width="10%">捐贈月份/捐贈數量</th>
<s:iterator value="mbapplyDonateList" status="stat">
<th class="C" width="15%"><s:property value="CateName + ' ' + MateName" /></th>
</s:iterator>
<th class="C" width="10%">加總</th>
</tr>
<s:iterator value="beginToReportmonth" status="stat">
<tr class="Mateuse">
<th class="C_CONTENT" width="10%"><s:property value= "beginToReportmonth[#stat.index]"/></th>
<s:iterator value="MateUseList" status="stat2">
<th class="C_CONTENT" width="15%">
<s:textfield id="materialmonthUse" class="materialmonthUse needdisabled" name="MateUseList[#stat2.index][#stat.index]" cssStyle="width:80%" size="3" maxlength="7" type="number" />
</th>
</s:iterator>
<!-- 新增每月捐贈數量加總 -->
<s:iterator value="MateUseSumList" status="stat3" >
<th class="C_CONTENT" width="10%">
<s:textfield id="materialmonthUseSum" class="materialmonthUseSum needdisabled" name="MateUseSumList[#stat3.index]" cssStyle="width:80%" size="3" maxlength="7" type="number"/>
</th>
</s:iterator>
</tr>
</s:iterator>
<tr>
<td class="C" width="10%">總計</td>
<s:iterator id="MateUseMonthTotalList" value="MateUseMonthTotalList" status="stat">
<th class="C_CONTENT" width="15%"><s:property value="MateUseMonthTotalList[#stat.index]" /></th>
</s:iterator>
</tr>
<tr>
<td class="C" width="10%">使用率</td>
<s:iterator id="mbapplyDonateList" value="mbapplyDonateList" status="stat">
<th class="C_CONTENT Usept" width="15%"><s:property value="materialPt" />%</th>
</s:iterator>
</tr>
<tr>
<td class="C" width="10%">剩餘量</td>
<s:iterator id="mbapplyDonateList" value="mbapplyDonateList" status="stat">
<th class="C_CONTENT Remain" width="15%"><s:property value="materialRemain" /></th>
</s:iterator>
</tr>
</table>
------------------------------------------------------------------
新增每月捐贈數量那邊為我要開發的項目
我不確定我新寫的<s:iterator value="MateUseSumList" status="stat3">那段是否正確
因為必須與後端連接資料才能正確顯示
後端程式碼
//查詢捐贈物資
DataList mbapplyDonate = dao2.findFdCaseMaterialList(fdSerno);
DataList mbreportMaterialUse = dao3.findMbReportMaterial(getReportserNo());
DataList mbreportMateUse = dao3.findMbReportMateUse(getReportserNo());
//查詢捐贈物資每月使用數量
List BeginToReportmonth = getBeginToReportmonth();
MateUseList = new ArrayList<List>();
MateUseSumList = new ArrayList<List>();
MateUseMonthTotalList = new ArrayList<List>();
for (int i=0; i<mbapplyDonate.size(); i++) {
int total = 0 ;
int sum = 0 ; //每月捐贈品項加總
List tempList3 = new ArrayList();
// List tempList4 = new ArrayList();
// List sumList = new ArrayList();
for (int j=0; j<BeginToReportmonth.size(); j++) {
if (!mbreportMateUse.isEmpty()) {
try {
tempList3.add(mbreportMateUse.get(j*mbapplyDonate.size() + i).getValue("USEDNUM") == null ? "0" : mbreportMateUse.get(j*mbapplyDonate.size() + i).getValue("USEDNUM"));
// tempList4.add(tempList3.get(j));
} catch (Exception e) {
tempList3.add("0");
// tempList4.add("0");
}
} else {
tempList3.add("0");
// tempList4.add("0");
}
// System.out.println("tempList4=" + tempList4);
}
for (int k=0; k<tempList3.size(); k++) {
total = total + Integer.parseInt(tempList3.get(k).toString());
}
MateUseList.add(tempList3);
// MateUseSumList.add(tempList4);
MateUseMonthTotalList.add(total);
}
我註解掉的是我在實驗的部分,而我也將tempList印出後發現長這樣
他是依照迴圈i=0時印出第一個品項的數量
當j迴圈跑完在重跑一次後,才會印出第二個品項的數量
大概像這樣
問題來了
我該怎麼將List中的迴圈跑第一次的第一個數值,與迴圈跑第二次的第一個數值做相加呢..
以圖來看的話,就是希望達成這樣
是否需要在迴圈中將數值給取出處理?再透過List將數值秀出?
還有前端Struts的迭代用法懇請大神指點是否正確><