在企业开发过程中,经常会遇到多条数据,需要同时保存或者添加的问题,今天我们就来探讨下,在此,我仅仅抛砖引玉,希望大家积极发表自己的意见。
一) 前台字符串拼接,后台拆分
这种方式是利用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>
注意:在编写这类代码的时候,一定注意传送到后台的是真正修改的数据,不要一股脑把全部数据都传送到后台
分享到:
相关推荐
同时也实现了文件上传(基于struts2的文件上传功能)。 4、代码下载,下载功能会判断用户是否下载过该代码,若下载过则不扣积分。下载功能也是基于struts2的下载模块实现的。 5、代码评论,该功能是我仿照qq空间评论...
@Actions struts2 的 Action 配置,用于配置多个 Action 方法上 @Action 配置访问路径,和方法绑定 @Result 结果集配置 struts2 和 spring 整合 struts2 的 Action 使用 spring 注解,被 spring 管理 @...
BlobByteArrayType使用从sessionFactory获取的Lob操作句柄lobHandler将byte[]的数据保存到Blob数据库字段中。这样,我们就再没有必要通过硬编码的方式,先insert然后再update来完成Blob类型数据的持久化,这个原来难...
2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为...
根据订餐系统流程,完成从浏览菜单、点餐到下单,到结账支付,到统计一条线的信息化管理,因此整个订餐管理信息系统的研发内容就是一整套订餐管理信息系统,实现订餐业务的计算机化。 二、课题的国内外开发动态 在...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73...
70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 4、请写...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 90 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 91 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...