struts使用list提交多行表单(提供完整示例)

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

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

2.核心类代码:

  TestForm.java
Java代码 复制代码
  1. public class TestForm extends ActionForm{   
  2.   
  3.     private List voList = null;   
  4.     public List getVoList() {   
  5.         return voList;   
  6.     }   
  7.     public void setVoList(List voList) {   
  8.         this.voList=voList;   
  9.     }   
  10.   
  11. }  
public class TestForm extends ActionForm{

	private List voList = null;
	public List getVoList() {
		return voList;
	}
	public void setVoList(List voList) {
		this.voList=voList;
	}

}

PreAction.java:准备初始数据
Java代码 复制代码
  1. public class PreAction extends Action {   
  2.   
  3.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  4.             HttpServletRequest request, HttpServletResponse response) {   
  5.         TestForm aform = (TestForm)form;   
  6.         TestVo vo1=new TestVo("1","vo1","11");   
  7.         TestVo vo2=new TestVo("2","vo2","22");   
  8.         TestVo vo3=new TestVo("3","vo3","33");   
  9.         List voList = new ArrayList();   
  10.         voList.add(vo1);   
  11.         voList.add(vo2);   
  12.         voList.add(vo3);   
  13.         aform.setVoList(voList);   
  14.         return mapping.findForward("jsp1");   
  15.            
  16.     }   
  17. }  
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);
		return mapping.findForward("jsp1");
		
	}
}

jsp1.jsp:编辑保存的页面
Java代码 复制代码
  1. <%@ page language="java" contentType="text/html;charset=UTF-8"pageEncoding="GBK"%>   
  2. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>   
  3. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>   
  4. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>   
  5.   
  6. <html>   
  7.     <head><title>This is jsp1.</title></head>   
  8.   
  9.     <body>   
  10.         <B>Edit</B>   
  11.         <html:form action="/saveAction">   
  12.             <TABLE>   
  13.                 <TR>   
  14.                     <TD>id</TD>   
  15.                     <TD>name</TD>   
  16.                     <TD>age</TD>   
  17.                 </TR>   
  18.                 <logic:iterate id="vo" name="testForm" property="voList" indexId="index1">   
  19.                 <TR>   
  20.                     <TD><input name='voList[<bean:write name="index1"/>].id' value='<bean:write name="vo" property="id"/>'></TD>   
  21.                     <TD><input name='voList[<bean:write name="index1"/>].name' value='<bean:write name="vo" property="name"/>'></TD>   
  22.                     <TD><input name='voList[<bean:write name="index1"/>].age' value='<bean:write name="vo" property="age"/>'></TD>   
  23.                 </TR>   
  24.                 </logic:iterate>   
  25.             </TABLE>   
  26.             <input type="submit" value=" 提交 " />   
  27.         </html:form>   
  28.   
  29.     </body>   
  30. </html>  
<%@ page language="java" contentType="text/html;charset=UTF-8"pageEncoding="GBK"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<html>
	<head><title>This is jsp1.</title></head>

	<body>
		<B>Edit</B>
		<html:form action="/saveAction">
			<TABLE>
				<TR>
					<TD>id</TD>
					<TD>name</TD>
					<TD>age</TD>
				</TR>
				<logic:iterate id="vo" name="testForm" property="voList" indexId="index1">
				<TR>
					<TD><input name='voList[<bean:write name="index1"/>].id' value='<bean:write name="vo" property="id"/>'></TD>
					<TD><input name='voList[<bean:write name="index1"/>].name' value='<bean:write name="vo" property="name"/>'></TD>
					<TD><input name='voList[<bean:write name="index1"/>].age' value='<bean:write name="vo" property="age"/>'></TD>
				</TR>
				</logic:iterate>
			</TABLE>
			<input type="submit" value=" 提交 " />
		</html:form>

	</body>
</html>

SaveAction.java:保存多行数据
Java代码 复制代码
  1. public class SaveAction extends Action {   
  2.   
  3.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  4.             HttpServletRequest request, HttpServletResponse response) {   
  5.         TestForm aform = (TestForm)form;   
  6.         List voList=aform.getVoList();   
  7.         //TODO:you can save data to database here.   
  8.            
  9.         request.setAttribute("voList", voList);   
  10.         return mapping.findForward("jsp2");   
  11.     }   
  12.   
  13. }  
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.
		
		request.setAttribute("voList", voList);
		return mapping.findForward("jsp2");
	}

}

jsp2.jsp:展示保存结果
Java代码 复制代码
  1. <%@ page language="java" contentType="text/html;charset=UTF-8"  
  2.     pageEncoding="GBK"%>   
  3. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>   
  4. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>   
  5. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>   
  6.   
  7. <html>   
  8.     <head><title>This is jsp2.</title></head>   
  9.     <body>   
  10.         <B>View</B>   
  11.         <br>   
  12.             <TABLE border=1>   
  13.                 <TR>   
  14.                     <TD>id</TD>   
  15.                     <TD>name</TD>   
  16.                     <TD>age</TD>   
  17.                 </TR>   
  18.                 <logic:iterate id="vo" name="voList">   
  19.                 <TR>   
  20.                     <TD><bean:write name="vo" property="id"/></TD>   
  21.                     <TD><bean:write name="vo" property="name"/></TD>   
  22.                     <TD><bean:write name="vo" property="age"/></TD>   
  23.                        
  24.                 </TR>   
  25.                 </logic:iterate>   
  26.             </TABLE>   
  27.     </body>   
  28. </html>  
<%@ page language="java" contentType="text/html;charset=UTF-8"
	pageEncoding="GBK"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<html>
	<head><title>This is jsp2.</title></head>
	<body>
		<B>View</B>
		<br>
			<TABLE border=1>
				<TR>
					<TD>id</TD>
					<TD>name</TD>
					<TD>age</TD>
				</TR>
				<logic:iterate id="vo" name="voList">
				<TR>
					<TD><bean:write name="vo" property="id"/></TD>
					<TD><bean:write name="vo" property="name"/></TD>
					<TD><bean:write name="vo" property="age"/></TD>
					
				</TR>
				</logic:iterate>
			</TABLE>
	</body>
</html>


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.如果同时需要删除、添加行的功能:
实现添加不难但实现删除较难,建议有这样需求的还是不要同时提交多行的较好。
  • testguo.rar (993.6 KB)
  • 描述: MyEclipse工程(所有示例代码)
  • 下载次数: 408
  • D4f78f3e-f169-326b-8f4c-83b4fa5ca228-thumb
  • 描述: jsp页面效果
  • 大小: 3.5 KB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值