Struts1 table提交多行数据

 

转自:http://www.javaeye.com/topic/169559

    在struts框架中常常会遇到多行表单的情况, 如何有效的利用struts框架提供的自动收集机制来处理呢? 这里提供一个示例.

1.示例功能:通过一个【提交】按钮保存多行人员信息,如附件中的图片所示。

2.核心类代码:

TestForm.java, MyBean.java, TestVO.java

public class TestForm extends ActionForm { private String tttt; private MyBean myBean = new MyBean(); private List voList = new AutoArrayList(TestVO.class); ... // getter and setter } public class MyBean { private String pro1; ... // getter and setter } public class TestVO { private String id; private String name; private String age; public TestVO() {} public TestVO(String id, String name, String age) { super(); this.id = id; this.name = name; this.age = age; } ... // getter and setter }

 

jsp0.jsp :初始页面

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> JSP0 preAction.do

PreAction.java :准备初始数据

public class PreAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { TestForm aform = (TestForm)form; TestVO vo1=new TestVO("1","vo1","11"); TestVO vo2=new TestVO("2","vo2","22"); TestVO vo3=new TestVO("3","vo3","33"); List voList = new ArrayList(); voList.add(vo1); voList.add(vo2); voList.add(vo3); aform.setVoList(voList); aform.setTttt("t1"); MyBean mybean = new MyBean(); mybean.setPro1("test1"); aform.setMyBean(mybean); return mapping.findForward("jsp1"); } }

 

jsp1.jsp :编辑保存的页面

<%@ page language="java" pageEncoding="GBK"%> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-logic" prefix="logic"%> <%@ taglib uri="/tags/struts-bean" prefix="bean"%> jsp1

id name age
].id">
提交

 

 

SaveAction.java :保存多行数据

public class SaveAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { TestForm aform = (TestForm) form; List voList = aform.getVoList(); // TODO:you can save data to database here. System.out.println(aform.getTttt()); System.out.println(aform.getMyBean().getPro1()); System.out.println(voList.size()); for (int i = 0; i < voList.size(); i++) { TestVO vo = (TestVO) voList.get(i); System.out.println(vo.getAge() + " " + vo.getId() + " " + vo.getName()); } request.setAttribute("voList", voList); return mapping.findForward("jsp1"); } }

 

3.几点说明:
A.strut填充ActionForm的方法:
如果key是简单的'name',直接form.setName(map.get('name'));
如果key是'person.name', 执行的操作是 form.getPerson().setName(map.get('person.name');
如果key是'voList[0].name', 它可以对应到数据或集合中,如对于数组 form.voList[0].name=map.get('voList[0].name'); 对于集合(List) form.getVoList().get(0).setName(map.get('voList[0].name'))
B.如果同时需要删除、添加行的功能:
实现添加不难但实现删除较难,建议有这样需求的还是不要同时提交多行的较好。


你可能感兴趣的:(Struts,JSP)