struts2传递List对象(复合对象)
1、前台jsp界面:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@include file="../include/taglib.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script src="js/common/jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
//对每行的第一个复选框实现简单的单选
$("#tablelist input[name=goodscheck]").click(function(){
$("#tablelist input[name=goodscheck]").attr('checked',false);
$(this).get(0).checked=true;
});
//添加一行,就是将第一个tr复制,默认有一个tr
$("#addbtn").click(function(){
var tr =$("#tablelist tr").eq(0);
var temptr=$(tr).clone(true); //复制tr
$("input",temptr).val(''); //将tr下的值清空
$("#tablelist").append(temptr);
});
//删除一行,至少有两个tr才能删除
$("#delbtn").click(function(){
if($("#tablelist tr").length>1){
var checks = $("#tablelist input[name=goodscheck]:checked");
if(checks && checks.length==1){
$(checks).parent().parent().remove();
}
}
});
//提交表单
$("#submit").click(function(){
refresh('tablelist');
testForm.submit();
});
});
//后台接收的是数组,因此需要刷新数组的索引值。如果刷新提交的索引为userTests[0]和userTests[2](假如userTests[1]被删除),
//后台的List集合的大小为3,索引为1的对象被认为是null.
function refresh(jq){
$("#"+jq+" tr").each(function(j){
$(this).children('td').children('input').each(function(){
var curname = $(this).attr('name');
if(curname){
var curnamearr = curname.split(".") ;
if(curnamearr && curnamearr.length>1){
var val="";
for(var i=1;i<curnamearr.length;i++){
val+="."+curnamearr[i];
}
$(this).attr('name','userTests['+j+']'+val);
}
}
});
});
}
</script>
</head>
<body>
<s:form action="login/test.do" id='testForm'>
<table id="tablelist">
<tr>
<td><input type="checkbox" name="goodscheck"></td>
<td><input type="text" name="userTests[0].name"/></td>
<td><input type="text" name="userTests[0].jtCode"/></td>
<td><input type="text" name="userTests[0].code"/></td>
<td><input type="text" name="userTests[0].operator.code"/></td>
</tr>
</table>
<s:submit id="submit" value="提交"></s:submit>
</s:form>
<br>
<input type="button" id="addbtn" value="添加">
<input type="button" id="delbtn" value="删除">
</body>
</html>
2、后台action代码:
private List<UserTest> userTests; //get set方法省略
public void test() {
if (userTests!=null) {
for(UserTest userTest: userTests){
logger.info(" ============ "+userTest +" operator: "+userTest.getOperator().getCode());
}
}else{
logger.info(" ============ userTest is null ");
}
}
3、javaBean对象
public class UserTest {
private String name;
private String code;
private String jtCode;
private TBLOperator operator;
...get set
}
public class TBLOperator implements Serializable {
private String code;
}
4、测试数据:
13:23:21,524 INFO [LoginAction] ============ UserTest [name=1, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@1225261] operator: 11
13:23:21,524 INFO [LoginAction] ============ UserTest [name=2, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@355104] operator: 22
13:23:21,524 INFO [LoginAction] ============ UserTest [name=4, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@59e5ec] operator: 44444444
13:23:21,524 INFO [LoginAction] ============ UserTest [name=5, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@5f77e] operator: 5555555555
struts2传递List对象(复合对象)的更多相关文章
- Activity之间传递数据或数据包Bundle,传递对象,对象序列化,对象实现Parcelable接口
package com.gaojinhua.android.activitymsg; import android.content.Intent; import android.os.Bundle; ...
- 3ds max学习笔记-- 复合对象运算
1,ProBoolean(超级布尔) 栗子: 新建一长方体,两个圆柱体,如下: 选择底部长方体,进入[复合对象],修改[操作],单击[拾取操作对象B],点击圆柱: 效果如下,线面较多: 高级布尔效果图 ...
- mybatis由浅入深day01_ 7输入映射(7.1传递pojo的包装对象_7.2#{}与${}_7.3传递简单类型_7.4传递pojo对象_7.5传递hashmap)
7 输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 7.1 传递pojo的包装对象 7.1.1 需求 完成用户信息的综合查询,需要 ...
- [Objective-C语言教程]复合对象(33)
在Objective-C中,可以在类集群中创建子类,该类集合定义了一个嵌入在其中的类. 这些类对象是复合对象.你可能想知道什么是类集群,下面首先了解什么是类集群. 1. 类集群 类集群是基础框架广泛使 ...
- Intent之对象传递(Parcelable传递对象和对象集合)
接着上一篇文章,以下我们讨论一下怎样利用Parcelable实现Intent之间对象的传递 一.实现对象传递 首先创建User.java实现Parcelable接口: package org.yayu ...
- MVC传递数据-传递对象或对象集合
前言 本文主要介绍从View(或者js)文件向Controller提交对象或者对象集合.比方.将表格中的一行数据作为一个对象提交.或将多行数据作为一个集合提交到Controller. 回想 从View ...
- JSP内置对象--request对象
本文主要介绍JSP中的request对象 request对象的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值 getAttri ...
- O-C相关-06:对象与对象的关系
对象与对象的关系 1.对象与对象的关系 依赖 关联 组合 常常讨论对象与对象关系时会提供两个属于:内聚性,耦合性 内聚一般指功能上的指向性 耦合一般指关联上的依赖性 2.依赖: 对象之间最弱的一种关联 ...
- Django运算表达式与Q对象/F对象
Django运算表达式与Q对象/F对象 1 模型查询 概述: 1 查询集:表示从数据库中获取的对象的集合 2 查询集可以有多个过滤器,通过 逻辑运算符连接 3 过滤器就是一个函数,基于所给的参数限制查 ...
- js中对象和对象创建方法
这一次我们来说一说在JavaScript中经常会用到的一个复杂基本类型,对象,先从对象的属性讲起,再讲对象的创建方法,基本涵盖了创建对象的各种方法,大家一起学习呀~ 一.对象 要掌握对象的使用及继承, ...
随机推荐
- C#将list转换为datatable
DataTable dt = new DataTable(); if (_list != null) { //通过反射获取list中的字段 System.Reflection.PropertyInfo ...
- static_cast 和 dynamic_cast 的区别
static_cast一般用来将枚举类型转换成整型,或者整型转换成浮点型.也可以用来将指向父类的指针转换成指向子类的指针.做这些转换前,你必须确定要转换的数据确实是目标类型的数据,因为static_c ...
- 51nod1486 大大走格子
容斥定理+dp...妈呀#1rp耗尽了难怪最近那么衰... #include<cstdio> #include<cstring> #include<cctype> ...
- 漫游Kafka实战篇之搭建Kafka运行环境
接下来一步一步搭建Kafka运行环境. Step 1: 下载Kafka 点击下载最新的版本并解压. > tar -xzf kafka_2.9.2-0.8.1.1.tgz > cd kafk ...
- MKNetworkKit: 网络处理又一利器
没有认识MK之前,即便ASI已经不再更新,也没有启用ASI.因为ASI对于网络的处理更偏向于底层,适合针对各种情形的扩展. 但是,今天我要开始使用 MKNetworkKit了,项目在github上,使 ...
- qt多文档
http://blog.csdn.net/siren0203/article/details/5661541
- MAC自动备份数据到服务器
需求:公司内部使用自己电脑,回家需要使用另一台电脑,所以想时时备份公司用的电脑中文件.代码到服务器上,回家就可以用啦 1 无密码使用scp (1)第一步:生成密匙对,我用的是rsa的密钥.使用命令 & ...
- shell 里把命令的输出赋给变量 以及变量的使用
//获取本月1号 的命令 date +%Y-$m-1 shell脚本 把时间命令的值赋给变量 并使用 #! /bin/sh #赋值 time=$(date +%Y-%m-) #使用变量(转换成时间戳 ...
- 构建高性能web站点--读书大纲
用户输入你的站点网址,等了半天..还没打开,裤衩一下就给关了.好了,流失了一个用户.为什么会有这样的问题呢.怎么解决自己站点“慢”,体验差的问题呢. 在这段等待的时间里,到底发生了什么?事实上这并不简 ...
- 树莓派 安装 OpenCV 使用CMake 编译工程 最新版2015
一.安装make,cmake sudo apt-get install make sudo apt-get install cmake 二.下载deb包 去这里下载libopencv_2.4.10.d ...