JSP頁面結合Struts2如何傳遞複選框對應的id陣列到後臺action中
阿新 • • 發佈:2019-01-04
我的問題情境是這樣的:
前臺有幾組複選框,每個框都對應一個id,只有在選中了該複選框之後,該複選框對應的id才會傳遞到後臺action中,後臺需要接受到一個id陣列。
問題解決的關鍵:
1.我利用Struts2的set和get方法自動注入引數,是無法直接傳遞陣列的,Struts2會自動將前臺的陣列自動裝配為以“, ”隔開的字串(注意是以逗號加空格符隔開)。因此在後臺接受時,只能定義一個字串,然後通過spilt()方法解析一下該字串,將該字串轉化為對應的陣列。
2.JSP頁面會自動判斷對應的複選框是否選中,選中才會將對應的id傳遞到後臺,未選中就不會傳遞對應的id。
具體程式碼:
1.jsp頁面程式碼:
<span style="font-size:14px;">... <form action="Update?ModuleID=<%=1%>" method="post" id="form1" name="form1"> <td><input type="submit" value="更新" onclick="return show()"></td> <td width="80px">工作動態</td> <% for(int i = 0 ; i < GzdtPara.size() ; i++){ String[] strs = GzdtPara.get(i); String id = strs[0]; String name = strs[1]; %> <td><input name="WebIDs" id="WebIDs" type="checkbox" value="<%=id%>"/><%=name%></td> <%} %> </form> ... ... function show( ) { var checkObj = document.all("WebIDs"); var j=0; for(var i = 0;i < checkObj.length;i++) { if(checkObj[i].checked == true){ j++; } } if(j != 0) { showWindow('友情提示','資料更新中,請耐心等待...',200,300); return true; }else { alert("請至少選擇一個複選框"); return false; } } </span>
2.後臺程式碼
model:
<span style="font-size:14px;">public class UpdateModel { private String ModuleID; private String WebIDs; public String getModuleID() { return ModuleID; } public void setModuleID(String moduleID) { ModuleID = moduleID; } public String getWebIDs() { return WebIDs; } public void setWebIDs(String webIDs) { WebIDs = webIDs; } }</span>
Action:
public class UpdateAction extends UpdateModel implements ServletRequestAware, Action {
public String Update() {
String strWebId = this.getWebIDs();
//“,”後面帶了一個空格
String[] strsWebId = strWebId.split(",");
int[] intsWebId = new int[strsWebId.length];
for (int i = 0; i < strsWebId.length; i++) {
//trim()截去前後空格
intsWebId[i] = Integer.valueOf(strsWebId[i].trim());
}
... ...
... ...
return SUCCESS;
}