Struts2 批量数据提交解决方案

来源:互联网 发布:个人手机点菜软件 编辑:程序博客网 时间:2024/06/04 20:10
 

这几天无聊,随便写点东西了,这东西可是花了时间才弄懂得,保存下来也许会有用的,就随便发了!

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

原创粉丝点击