我知道的关于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代码。
分享到:
相关推荐
同时,Struts2还提供了前台校验功能,允许我们在JSP页面中对用户输入进行实时验证,如必填字段检查、数据格式校验等,减少了服务器端的压力。 接下来,我们探讨“struts2 OGNL 表达式详解”。OGNL(Object-Graph ...
在开发Java Web应用程序时,SSM(Spring、Struts、MyBatis)是一个常见的轻量级框架组合。然而,开发者时常会遇到一个头疼的问题:前台传递的中文参数在到达后台时出现乱码。这个问题通常会影响到数据处理,特别是...
- 可以通过request对象将数据从Servlet传递给JSP页面。 **10. Struts处理流程** - Struts处理流程通常包括接收用户请求、调用业务逻辑、更新视图等步骤。 **11. Struts Taglib(了解常用的)** - Struts提供了...
**问题十八:SpringMvc用什么对象从后台向前台传递数据的?** - 使用`Model`或`ModelMap`。 **问题十九:怎么样把ModelMap里面的数据放入Session里面?** - 将数据添加到`HttpSession`中。 **问题二十:...
#### Struts2框架 - **拦截器**:通过拦截器处理请求、响应等过程。 - **结果类型**:定义不同的结果类型来控制请求处理后的行为。 #### Hibernate框架 - **对象关系映射**:将Java对象与数据库表进行映射。 - **懒...
// 从前台接收到的查询参数 'info' 分解出字符串数组 String[] s = info.split(","); // 遍历数组,对每个 ID 调用删除方法 for (int i = 0; i ; i++) { userDao.deleteUser(s[i]); } return "success"; }...