在企业开发过程中,经常会遇到多条数据,需要同时保存或者添加的问题,今天我们就来探讨下,在此,我仅仅抛砖引玉,希望大家积极发表自己的意见。
一) 前台字符串拼接,后台拆分
这种方式是利用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实现批量提交数据的功能。 ### 一、批量提交的概念 批量提交是指一次性处理多个数据记录,而不是逐个处理。在Web应用中,这通常涉及到用户上传一个包含多条记录的数据文件,或者...
4. **删除(Delete)**:用户选择一条或多条记录进行删除,Action需要处理这些请求并从数据库中移除选定的记录。 在这个案例中,我们可能会看到以下关键部分: - **struts2day04.xml**:Struts2配置文件,定义了...
在本项目中,开发者使用了Hibernate和Struts2这两个核心框架来构建一个基础的登录注册系统,同时还涉及到了分页查询这一重要的数据处理技术。以下是对这些知识点的详细阐述: **1. Hibernate框架:** Hibernate是一...
本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...
通过Spring的事务管理,可以确保在多条数据库操作之间保持事务的一致性,比如在文件上传时,如果保存用户信息和文件信息失败,所有改动都能被回滚。 项目中的主要模块可能包括: 1. **用户管理模块**:负责用户...
总的来说,使用Struts和Hibernate实现分页功能,需要结合MVC模式和ORM思想,合理设计数据访问层和业务逻辑层,同时确保前端与后端的有效通信。这个过程涉及到了Java编程、数据库操作、框架理解和页面渲染等多个方面...
Struts2提供了多种实现分页的方法,如使用Tiles2或FreeMarker模板进行前端展示,以及在后台通过DAO层进行数据查询分页。通常,我们会定义一个PageBean来存储当前页数、总页数、每页显示条数等信息,并在Action类中...
总的来说,这个DEMO项目为学习者提供了一个实际的、完整的Struts2应用实例,涵盖了从数据操作到前端展示的多个层面,是理解Struts2框架及其在实际开发中应用的良好起点。通过深入研究和修改这个DEMO,开发者可以...
在Java EE(企业版)环境中,Struts为开发者提供了一种组织应用程序的方式,使得业务逻辑、数据和用户界面解耦,提高了代码的可维护性和可复用性。本篇文章将深入探讨如何使用Struts来实现增删改操作。 1. **Struts...
Struts2的动作类接收到这些数据后,可以将它们保存到数据库中,形成一条新的信息记录。 **实例解析** 在这个"bulletin"实例中,很可能包含以下组件: 1. `BulletinAction`:处理发布信息请求的Struts2动作类。 2. `...
在Struts2框架中,开发Web应用时,我们经常需要实现验证码功能,以防止恶意的自动脚本或机器人提交表单。"通过Struts2返回验证码文件"这一主题主要涉及如何利用Struts2来生成并返回一个动态的、用于验证用户输入的...
此外,Spring的事务管理功能可以确保在处理图书操作时的数据一致性,如在多条数据库操作之间维护事务的原子性。 4. **集成与协同**:这三者集成时,通常Spring作为核心,管理Struts2和Hibernate的生命周期。Struts2...
在Struts1.x中,实现文件上传功能是一个常见的需求,特别是在处理用户提交的表单时需要包含多个文件。下面我们将详细介绍如何使用Struts1.x来实现多个文件的上传。 首先,我们需要在HTML表单中添加`...
例如,添加一条订单记录,只需创建一个Order对象并设置其属性,然后通过Hibernate的Session接口保存到数据库。 在开发过程中,Struts和Hibernate的集成可以极大地提高开发效率。通常,Struts的Action会调用Service...
7. **事务管理**:在多条数据库操作之间,可能需要使用事务来保证数据的一致性。Hibernate提供了事务管理机制,可以在Action类中控制事务的开启、提交和回滚。 通过这个实例,你可以学习到如何在实际项目中使用...
4. **ActionForm**(Struts 1)/**ModelDriven**(Struts 2):Struts 1中,可以使用ActionForm来收集用户输入和存储业务数据;而在Struts 2中,可以利用ModelDriven接口将模型对象与Action关联,简化了数据绑定过程...
当用户提交表单时,Struts框架会调用后台的Java方法,将数据保存到数据库中。 删除功能:删除功能允许管理员移除不再需要的图书记录。这通常通过点击一个删除按钮触发,Struts会调用相应的方法,根据图书的ID或其他...
5. **事务管理**:如果多个数据库操作需要作为一个整体完成(例如,添加一条新的留言并更新用户信息),则需要考虑事务管理。在Struts应用中,可以使用Spring框架的AOP(Aspect-Oriented Programming)特性来实现...