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中经常会用到的一个复杂基本类型,对象,先从对象的属性讲起,再讲对象的创建方法,基本涵盖了创建对象的各种方法,大家一起学习呀~ 一.对象 要掌握对象的使用及继承, ...
随机推荐
- combobox远程加载数据的总结和Json数据的小结
1.从后台返回请求加载Combobox下拉框数据 html部分1 <select name="mateBelongZ" id="mateBelongZID" ...
- 详解Android中的屏幕方向
屏幕方向 是对Activity而言的,所以你可以在AndroidManifest.xml 文件中,通过<activity> 标记的screenOrientation 属性进行设定,例如: ...
- iOS富文本(二)初识Text Kit
概述 Text Kit 是建立在Core Text上的文本布局系统,虽然没有Core Text那么强大的文本处理功能,但是对于大多数常见的文本布局用Text Kit能够很简单的实现,而不是用Core ...
- codeforces 450 B Jzzhu and Sequences
题意:给出f1=x,f2=y,f(i)=f(i-1)+f(i+1),求f(n)模上10e9+7 因为 可以求出通项公式:f(i)=f(i-1)-f(i-2) 然后 f1=x; f2=y; f3=y-x ...
- UVa 247 Calling Circles【传递闭包】
题意:给出n个人的m次电话,问最后构成多少个环,找出所有的环 自己想的是:用map来储存人名,每个人名映射成一个数字编号,再用并查集,求出有多少块连通块,输出 可是map不熟,写不出来,而且用并查集输 ...
- openerp 7 在ubuntu上设置开机启动
我们要让openerp开机运行起来. 第一步,先进入系统目录: cd /etc/init.d 第二步,创建文件.命名为openerp-server sudo vi openepr-server 第三步 ...
- Jquery源码中的Javascript基础知识(三)
这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: (function( window, undefined ) { // code 定义变量 jQuery = fun ...
- 一行JS代码,解决DedeCMS TAG标签错误输入符号问题
在维护内容的时候, Tag标签输入经常要来回切换输入法, 只能通过','号分隔. 中文用户, 输入法出来的经常是全角的, 经常弄错, 增加了检查的工作量, 现在只要一句JS代码, 就自动替换所有 ...
- 20160203.CCPP体系详解(0013天)
程序片段(01):数组.c+02.数组初始化语法.c 内容概要:数组 ///01.数组.c #include <stdio.h> #include <stdlib.h> //0 ...
- QQ网站如何检测对本地已经登录的qq用户
网上有很多猜测,比如—— QQ 登录时在本地某地方存登录 ID 信息(Cookie 或文件),用 js 读,然后去服务器认证.但是现在的浏览器一般有沙箱功能,js 无法读到登录 ID:而且在清空 Co ...