首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2 多条数据封存的实现

2013-01-27 
Struts2 多条数据保存的实现在企业开发过程中,经常会遇到多条数据,需要同时保存或者添加的问题,今天我们就

Struts2 多条数据保存的实现
在企业开发过程中,经常会遇到多条数据,需要同时保存或者添加的问题,今天我们就来探讨下,在此,我仅仅抛砖引玉,希望大家积极发表自己的意见。
一) 前台字符串拼接,后台拆分
    这种方式是利用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" /></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>

注意:在编写这类代码的时候,一定注意传送到后台的是真正修改的数据,不要一股脑把全部数据都传送到后台

热点排行