struts2中Action怎样获取动态表单中的多行数据?

DimPasser 2012-05-08 03:23:41
我的页面如下,每点击一次“添加”按钮就生成一行表格,当所有信息输入完毕后点击“提交”按钮将值传给Action。如果行数已经确定的话可以在Action中通过get()方法来获取,但现在行数不确定,请教大家如何在Action中获取到这多行数据?
我的HTML代码如下:

<html>
<head>
<script type="text/javascript">
$().ready(function(){

//添加学生
$("#bt_add").click(function(){
var tr = $("#datalist table tbody:last-child");
//alert($("#datalist table tbody:last-child").html());
$("#datalist table").append($(".trmodel").clone().show().removeClass());
});

$(".delete").live('click',function(){
$(this).parents("tr").animate({ opacity: 'hide', left:'+250px', top:'-120px' }, 1000);
});
});
</script>
</head>
<body>
<div id="title">
<h2>添加学生</h2>
<div>
入学年份 <select style="width:80px;"><option>2008</option></select>
系别 <select style="width:150px;"><option>计算机与科学系</option></select>
班级 <select style="width:150px;"><option>90812P</option></select>
<span class="buttons">
<input type="button" value="提交" />
<input type="button" value="添加" id="bt_add" />
</span>
</div>
</div>

<div style="clear:both;"></div>
<!--表格样式-->
<div id="datalist">

<table>
<thead>
<td width="20%">学号</td>
<td width="20%">学生姓名</td>
<td width="10%">性别</td>
<td width="20%"></td>
</thead>
<tbody>
<tr style="">
<td align="left"><input type="text" value="" /></td>
<td align="left"><input type="text" value="" /></td>
<td>
<label>
<input type="radio" name="RadioGroup1" value="男" id="RadioGroup1_0" checked="checked" class="input_align_5"/>
男</label>
<label>
<input type="radio" name="RadioGroup1" value="女" id="RadioGroup1_1" class="input_align_5" />
女</label>
</td>
<td></td>
</tr>

<tr style=" display:none;" class="trmodel">
<td align="left"><input type="text" value="" /></td>
<td align="left"><input type="text" value="" /></td>
<td>
<label>
<input type="radio" name="RadioGroup1" value="男" id="RadioGroup1_0" checked="checked" class="input_align_5"/>
男</label>
<label>
<input type="radio" name="RadioGroup1" value="女" id="RadioGroup1_1" class="input_align_5" />
女</label>
</td>
<td><a href="#" class="delete"> 删除</a></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>

页面如下:
...全文
1110 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxw3152 2012-05-08
  • 打赏
  • 举报
回复
carTab为table的ID
var ObjTab =document.getElementById("carTab")
var tempRow = ObjTab.rows.length;
tempRow为该表格有多少行
PYy_xm 2012-05-08
  • 打赏
  • 举报
回复
写成集合,取的时候用迭代就可以了呗
a-shitou 2012-05-08
  • 打赏
  • 举报
回复
那你们的baseAction是谁写的啊?你看看这个方法在哪.写个类似的,返回类型是String[]
遇到这种直接调用,,,ok
DimPasser 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

那你的getUsername()这个方法是在baseAction还是在Actionform?
[/Quote]
这个不清楚啊,我是刚学SSH,貌似SSH框架搭起来后就可以直接用getUsername()方法。
a-shitou 2012-05-08
  • 打赏
  • 举报
回复
那你的getUsername()这个方法是在baseAction还是在Actionform?
有始有终1 2012-05-08
  • 打赏
  • 举报
回复
<tr style=" display:none;" class="trmodel">
<td align="left"><input type="text" name="stus.id" /></td>
<td align="left"><input type="text" name="stus.name" /></td>
<td>
<label>
<input type="radio" name="stus.sex" value="男" id="RadioGroup1_0" checked="checked" class="input_align_5"/>
男</label>
<label>
<input type="radio" name="stus.sex" value="女" id="RadioGroup1_1" class="input_align_5" />
女</label>
</td>
<td><a href="#" class="delete"> 删除</a></td>
</tr>


name值 你修改下!
动态修改,页面无刷新用ajax吧!
DimPasser 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

不对啊。。。你的getUsername()?难道是ActionForm?一个动态的form你怎么还写ActionForm?
[/Quote]
我用的是SSH架构,通过getUsername()来获取页面值的
a-shitou 2012-05-08
  • 打赏
  • 举报
回复
不知道ActionForm对应的元素能不能定义成String[]类型的。。。
有始有终1 2012-05-08
  • 打赏
  • 举报
回复
你的表的每一行都属于一个对象,那么一张表就可以放到集合里面;
在struts2中 可以使用类型转换来做
XXXXAction类中 可以定义一个list;(前提是你有一个student的entity类,也就是实体类)
例如:List<student> stus;
让这个量生成get,set方法;
在你的jsp页面中 表格中的td里面你可以存放struts2自带的标签,或者html标签都可以;
请求如:<input type="text" name="stus.id" >
:<input type="text" name="stus.name" >
:<input type="text" name="stus.sex" >

这样提交后 sturts2 自动做类型转换,表格中的每一行都代表student的一个对象,它会自动帮你创建student对象并且赋值,你可以在XXXXAction类中打印这个list集合看看是否是你要的数据
a-shitou 2012-05-08
  • 打赏
  • 举报
回复
不对啊。。。你的getUsername()?难道是ActionForm?一个动态的form你怎么还写ActionForm?
古布 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:

你的学号和姓名还有性别在后台都用数组接收。 页面上的空间name 就写一样的。(就是学号name一样,姓名name一样。)

怎样在后台用数组接受呢?如果只有一条数据,可以在页面中写<input name="username" type=text>,然后在Action中通过getUsername()方法获取输入的值。现在有多条数据,如果把name写成一样,那么怎样……
[/Quote]

后台的username 定义为String[] 或者List类型。按照下标取值。和前台--对应
a-shitou 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 2 楼 的回复:

String[] number= request.getParameter("学号input的name");
String[] name = request.getParameter("姓名input的name");
。。。。

学号input的name个数事先不确定,是通过点击“添加”按钮动态添加的。能否修改HTML代码,让每次添加的input的name不一……
[/Quote]
你那样的话name就是动态的,action你不知道该获取哪些name
a-shitou 2012-05-08
  • 打赏
  • 举报
回复
你的getUsername()方法应该是baseaction把request.getParameter方法封装了
1.你可以在baseAction加一个方法getUsernamebyArr()
2.页面js把数据组织成json格式数据,action接受json解析你的form数据
DimPasser 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

String[] number= request.getParameter("学号input的name");
String[] name = request.getParameter("姓名input的name");
。。。。
[/Quote]
学号input的name个数事先不确定,是通过点击“添加”按钮动态添加的。能否修改HTML代码,让每次添加的input的name不一样?
DimPasser 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你的学号和姓名还有性别在后台都用数组接收。 页面上的空间name 就写一样的。(就是学号name一样,姓名name一样。)
[/Quote]
怎样在后台用数组接受呢?如果只有一条数据,可以在页面中写<input name="username" type=text>,然后在Action中通过getUsername()方法获取输入的值。现在有多条数据,如果把name写成一样,那么怎样在后台获取呢?
a-shitou 2012-05-08
  • 打赏
  • 举报
回复
String[] number= request.getParameter("学号input的name");
String[] name = request.getParameter("姓名input的name");
。。。。
qq737604771 2012-05-08
  • 打赏
  • 举报
回复
你的学号和姓名还有性别在后台都用数组接收。 页面上的空间name 就写一样的。(就是学号name一样,姓名name一样。)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧