1. 程式人生 > >JSP頁面結合Struts2如何傳遞複選框對應的id陣列到後臺action中

JSP頁面結合Struts2如何傳遞複選框對應的id陣列到後臺action中

我的問題情境是這樣的:

        前臺有幾組複選框,每個框都對應一個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;
	}