这几天无聊,随便写点东西了,这东西可是花了时间才弄懂得,保存下来也许会有用的,就随便发了!
Struts2里面提供了list类型,以及类型转换,因此,我们可以利用struts2提供的类型转换将表单里的多个数据先转换成list集合类型,然后在一起提交到数据库(通过for循环实现),下面是我的具体例子!
将页面中的多条记录一次提交到数据库,页面如下:
页面核心代码如下:
<s:form name="HomeWorkReg" action="HomeWorkReg"> #这是定义的action
<table border="1">
<tr>
<td width="118" align="center">学号</td>
<td width="160" align="center">课 程 名 </td>
<td width="152" align="center">备 注 </td>
</tr>
<s:iterator value="#session.classmess" status="stat">
<tr>
<td>
<input type="text" readonly="true" name="paytuition1"value=<s:property value="studentid"/>> # ### name="paytuition1"
</td>
<td>
<input type="text" readonly="true" name="paytuition1"value=<s:property value="#session.coursename"/>>
<input type="hidden" name="paytuition1" value=<s:propertyvalue="#session.handintime"/>/>
</td>
<td>
<input name="paytuition1" type="text" size="20">
</td>
</tr>
</s:iterator>
</table>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Reset" value="重置">
</s:form>
注意:页面中的每个input标签的name属性,均是paytuition1,这样写就是把页面的每个参数传递到paytuition1这个list对象(多条记录处理方式,private List<HomeWorkReg> paytuition1;)里面,然后我们在action相同的目录下写一个类型转换类,名字为:HomeWorkRegConvert,处理的action名为:HomeWorkRegAction,当然,这里还需要一个配置文件,用于处理action类和转换类的映射,名为:HomeWorkRegAction-conversion.properties,内容很少:paytuition1=item.my1.action.HomeWorkRegConvert,这里的命名规则是:对象名=转换类名,具体到包;
转换类也很简单,代码如下:
public class HomeWorkRegConvert extends StrutsTypeConverter //这里要继承struts2提供的转换基类
{
public Object convertFromString(Map context, String[] values, ClasstoClass) //struts2里面的转换函数,将String转换为想要的类型
{
List<HomeWorkRegist> result = newArrayList<HomeWorkRegist>();
for (int i = 0; i < values.length ; i++ )
{
HomeWorkRegist HomeWorkReg = new HomeWorkRegist(); //新建一个对象
HomeWorkReg.setStudentid(values[i]); //依次将值保存到集合中
i++;
HomeWorkReg.setCoursename(values[i]);
i++;
HomeWorkReg.setHandintime(Integer.parseInt(values[i]));
i++;
HomeWorkReg.setRemark(values[i]);
result.add(HomeWorkReg);
}
return result;
}
通过上面的代码,就将页面传过来的参数转换成了目标List类型,接下来就是在action中处理了,处理过程也是很简单的,核心代码如下:
Int mapsize=paytuition1.size(); //获得List对象的长度
for (int i = 0; i < mapsize; i++) //依次对List集合里的数据进行处理,处理函数还是按单条记录处理时一样
{
studentid=getPaytuition1().get(i).getStudentid(); //通过list对象的方法get(arg0)获取值
coursename=getPaytuition1().get(i).getCoursename();
handintime=getPaytuition1().get(i).getHandintime();
remark=getPaytuition1().get(i).getRemark();
if(mgr1.addHomeWorkRegistMessage(studentid,coursename,registtime,remark,recordman,handintime)) //在业务控制器中定义的处理函数,用于向数据库中添加记录
{
}
else
{
addActionError( "录入学生作业信息出错,请刷新后重试!");
return "failure";
}
}
通过上面的介绍,应该对struts2批量记录提交有了一个大致的了解了吧,通过具体的实例后,相信大家会有更好的理解,这只是实现的一种方法;其他的像action的配置等就不用多说了
本文转自:http://blog.csdn.net/kaparo/archive/2010/01/05/5136611.aspx