一) 前台字符串拼接,后台拆分
这种方式是利用js遍历数据,并使用一个特殊符号,把每条拼接在一起,到后台再按照特定字符,先拆分出一条记录,再拆分出所有数据。不推荐种方法,所以在这里不叙述了
二) 前台使用一个名字,后台拆分
前台代码
<form action="index.action"> <input type="text" name="myTest" value="1"/> <input type="text" name="myTest" value="2"/> <input type="text" name="myTest" value="3"/> <input type="text" name="myTest" value="4"/> <input type="text" name="myTest" value="5"/> <input type="submit"> </form>
后台代码
private String myTest; public String getMyTest() { return myTest; } public void setMyTest(String myTest) { this.myTest = myTest; }
数据格式
myTest = 1, 2, 3, 4, 5
再进行数据拆分就可以了
三) 使用jquery的JSON进行数据传输
1.先引入js
<script type="text/javascript" src="_public/js/json2.js"></script> <script type="text/javascript" src="_public/js/jqeury-1.8.3.js"></script>
2.取得各个值,并生成json数组
html嵌入
var jsonArr = new Array(); $("input:checkbox:checked").each(function(i){ if($(this).val()!="on"){ jsonArr.push($(this).val()); } }); var params = JSON.stringify({ "delingArr":jsonArr }); var result = getJsonByAjaxArr(params,"houseDelete.action"); alert(result.executeMessage);
getJsonByAjaxArr函数
function getJsonByAjaxArr(param,actionName){ var result; $.ajax({ url: actionName, type: 'POST', async: false,//同步 只有success之后才会继续走 contentType:"application/json",//没有这个,数组将不成功 data: param, success: function(returnData, textStatus) { result = returnData; }, error: function(xhr, textStatus, errorThrown) { alert("Data submit error"); } }); return result; }
3.添加拦截器
在Struts2中加入拦截器
<package name="jsonTilesSuper" extends="json-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> </result-types> <interceptors> <interceptor-stack name="myStack"> <interceptor-ref name="json"/> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="myStack" /> <global-results> <result name="NOT_LOGIN" type="tiles">lodg.login</result> </global-results> </package>
并加入包
struts2-json-plugin-2.3.7.jar
继承这个包的都有了JSON拦截的方法
4.后台
private ArrayList<String> delingArr; public ArrayList<String> getDelingArr() { return delingArr; } public void setDelingArr(ArrayList<String> delingArr) { this.delingArr = delingArr; }
5前台
<#if result?exists && (result?size>0) > <#list result as current> <tr> <td><input type="checkbox" name="chk" id="chk" value="${current.lodging_id?if_exists}" /></td> <td>${current.lodging_catecd?if_exists}</td> <td>${current.lodging_group?if_exists}</td> <td>${current.lodging_unit?if_exists}</td> <td>${current.lodging_floor?if_exists}</td> <td>${current.lodging_ho?if_exists}</td> <td>${current.room_count?if_exists}</td> <td>${current.residence_number?if_exists}</td> <td>${current.area?if_exists}</td> <td>${current.lodging_type?if_exists}</td> <td>${current.rent_compnm?if_exists}</td> <td>${current.man_count?if_exists}</td> <td><a style="cursor: hand" id="houseEdtForm" onclick="houseEdtFormClick('${current.lodging_id?if_exists}','${current.residence_number?if_exists}','${current.comp_cd?if_exists}','${current.houseType_cd?if_exists}')"> <img src="_public/images/ok.gif"> 修改</a> </td> </tr> </#list> <#else> <tr> <td colspan=12 class="st">没有检索出数据!</td> </tr> </#if>
注意:在编写这类代码的时候,一定注意传送到后台的是真正修改的数据,不要一股脑把全部数据都传送到后台