我知道的关于action接收前台的对象数组的方式有两种
1.在input标签中利name属性进行设置
<input name="studentList[0].name">
2.通过ajax来传递
var billList = [];
$('#data_tab tr').each(function(index, tr) {
tr = $(tr);
billList.push({
channelId : $('#channel option:selected').val(),
serviceId : tr.find('td:nth-child(1) a').attr('service_id'),
serviceName : tr.find('td:nth-child(1) a').html().trim(),
playTime : $('#playTime').val() + ' ' + tr.find('td:nth-child(2)').html() ,
duration : tr.find('td:nth-child(3)').html()
});
});
var dataPara = { channel : $('#channel option:selected').val(),
playTime:$('#playTime').val(),
billList:billList
};
// console.log(dataPara)
$.ajax({type:'post',
url:'playBillAction!save.action',
data:dataPara,
dataType:'json',
success:function(rtn) {
// console.log(rtn);
if (rtn.opResult.isSuccessed) {
alert('操作已成功!');
} else {
alert('操作失败,请稍后再试!');
}
}
});
这里用的ajax库是jquery-1.4.2,但是在实际运行的时候,发现后台action的billList属性并没有被正确赋值。跟踪后发现,前台发到服务器的参数形式是这样的:billList[0][channnelId]=1,这种方式struts2好像不支持,必须是billList[0].channelId=1样式才行。
跟踪jquery的源代码后发现,这一步是在function buildParams( prefix, obj )中完成的,把对应部分改成:
else if ( !traditional && obj != null && typeof obj === "object" ) {
// Serialize object item.
jQuery.each( obj, function( k, v ) {
buildParams( prefix + "." + k, v );
});
}
然后就可以正常接收了。
附件是修改完成的jquery代码。
分享到:
相关推荐
在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...
2. 在ActionForm中声明对象数组属性,并重写`reset`方法以初始化数组。 3. 在JSP页面中动态创建表单,使用数组索引引用对象属性。 4. 在Action类中从ActionForm中获取对象数组,并进行进一步处理。 通过这种方式,...
本文将深入探讨如何使用jQuery的AJAX方法发送JSON对象数组到Struts2的Action,并在后端进行处理。 首先,我们了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...
在本教程中,我们将探讨如何利用Struts2框架,结合数组来实现多文件上传,并利用过滤器进行预处理,确保上传的安全性。 首先,让我们了解一下多文件上传的基本概念。在传统的HTTP请求中,每个请求只能携带一个文件...
亲自做了一个struts2后台接收前台jsp页面传来的数组参数demo,因为参考网上的资源如用webwork表单提交等集成到项目有问题,所以做了一个单独的demo,经测试,用表单提交类似users[0].name,users[1].name的数组参数是...
本文将详细讲解如何利用Struts2处理集合数组并将其转化为XLS文件。 首先,我们需要一个`List<Object>`类型的集合,其中每个Object可以是包含多个属性的数据实体,这些属性将作为Excel文件中的列数据。例如,我们有...
在Struts2框架中,`<s:iterator>`标签被广泛用于遍历集合或数组等数据结构。本文将深入探讨如何使用Struts2中的`<s:iterator>`标签来遍历二维数组,并通过实例代码来具体说明其用法。 ### Struts2 Iterator标签 ##...
"jQuery+json异步实现JSP和struts2之间的数据传递"是一个典型的应用场景,它结合了前端JavaScript库jQuery与后端MVC框架Struts2,通过JSON这种轻量级的数据交换格式进行高效的数据交互。下面我们将详细探讨这一主题...
1. **封装OGNL操作,实现值的传递**:Struts2通过对OGNL表达式的封装,实现从客户端传入的参数到Java对象之间的值传递。这一过程包括但不限于对各种复杂类型的处理,如数组、列表、映射等。 2. **类型转换**:为了...
使用struts2表单传值,可以传一个或者是作为一个对象的各个属性传,都非常灵活便捷。但是如果我们需要传一个数组并希望struts正确接收,该怎么处理呢? 下面我将通过普通表单和ajax两种方式讲解。首先我们有如下一个...
Struts2作为一款流行的Java Web框架,为开发者提供了丰富的功能,其中包括通过方法上传递参数的能力。这种方法使得在处理用户请求时更加灵活,不需要依赖特定的注解,而是直接通过参数名来获取界面传递的参数信息。...
使用`@Result`注解或struts.xml配置文件,可以指定一个结果类型为`json`,这样Struts2会将Action的返回对象转换成JSON格式并返回给前端。 **Ajax请求与JSON数据** 前端JavaScript代码使用XMLHttpRequest对象或现代...
7. **值栈(Value Stack)**:Struts2的值栈是一个数据容器,它可以存储Action对象以及任何其他需要传递到视图的数据。在JSP页面中,可以直接通过OGNL(Object-Graph Navigation Language)表达式访问值栈中的数据。 ...
在Struts2中,OGNL用于传递Action与视图之间的数据,以及在拦截器中进行表达式计算。 4. **struts2-convention-plugin.jar**:这是Struts2的约定优于配置插件,它简化了Action类和结果配置,使得开发者可以按照一定...
但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
总的来说,Struts2提供了多种方式来向结果传递参数,这使得它在处理复杂的业务逻辑和页面跳转时具有高度的可定制性。根据项目的具体需求,选择合适的方法可以提高代码的可维护性和效率。在实践中,结合使用不同的...
### Struts2 (对象.属性)注入解析 #### 一、引言 随着技术的发展,Struts2框架作为Struts1的升级版本,在处理表单数据方面进行了显著改进。Struts1时代,开发者通常需要创建FormBean来封装前端传来的表单数据,这...
本文将详细解释如何使用Struts2和JSON来实现AJAX返回对象和列表。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在Struts2中,JSON插件...
本入门篇主要涵盖了Struts2的基础配置、通配符使用、参数注入以及内置对象的获取,非常适合初学者进行学习。 1. **基础配置**:在Struts2中,基础配置主要通过`struts.xml`文件完成。这个文件定义了Action(动作)...
5. **Value Stack**:值栈是Struts2的一个重要概念,它是一个对象容器,存储Action实例和需要传递到视图的数据。视图可以直接通过OGNL(Object-Graph Navigation Language)表达式访问值栈中的对象。 二、OGNL...