在struts框架中常常会遇到多行表单的情况, 如何有效的利用struts框架提供的自动收集机制来处理呢? 这里提供一个示例.
1.示例功能:通过一个【提交】按钮保存多行人员信息,如附件中的图片所示。
2.核心类代码:
TestForm.java
public class TestForm extends ActionForm{
private List voList = null;
public List getVoList() {
return voList;
}
public void setVoList(List voList) {
this.voList=voList;
}
}
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);
return mapping.findForward("jsp1");
}
}
jsp1.jsp:编辑保存的页面
<%@ 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:保存多行数据
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:展示保存结果
<%@ 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工程(所有示例代码)
- 下载次数: 1315

- 描述: jsp页面效果
- 大小: 3.5 KB
分享到:
相关推荐
本文将深入探讨如何在Struts框架下实现多行数据的动态添加与提交,结合给定的代码示例进行详细解析。 ### Struts框架简介 Struts是Apache软件基金会下的一个开源项目,它是一个基于MVC(Model-View-Controller)...
至于"unicom"这个文件名,可能是指一个具体的案例或示例项目,它可能包含了处理Struts1.2表单提交的代码和配置。如果能访问到这个项目,可以更深入地学习Struts1.2处理包含列表对象的表单提交的实践细节。 总结来说...
本文将详细介绍Struts2中的表单标签及其使用方法。 #### 二、Struts2表单标签概述 Struts2中的表单标签主要分为基础表单标签和高级表单标签两大类。基础表单标签涵盖了如单选框、复选框、下拉列表等基本元素;而...
在Struts1中,ActionForm类需要有一个对应的List字段来接收这些值,这样在提交表单时,Struts1的默认Binding机制会自动将这些值绑定到List中。 4. **配置文件**: 配置文件(struts-config.xml)需要添加相应的...
### 使用Struts Token机制解决表单重复提交 #### 一、引言 在Web应用程序开发过程中,表单重复提交是一个常见的问题。用户可能因为网络延迟、浏览器缓存等原因导致重复点击提交按钮,进而向服务器发送多个相同的...
"jsp中struts2.0标签应用示例"这个主题主要关注如何在JSP页面中利用Struts2.0提供的标签进行视图层的构建,通过实际例子展示了`<s:form>`、`<s:textfield>`、`<s:password>`、`<s:select>`等常用标签的使用,...
本示例将深入探讨Struts中常用的标签及其应用。 1. **`<s:form>`** 标签: 这是Struts2中最基本的表单标签,用于创建HTML表单。它可以自动绑定到Action类的属性,提供数据验证等功能。例如: ```jsp 用户名"/>...
在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。
在Web开发中,Struts2、Ajax和JSON的结合使用能实现异步数据交互,提高用户体验。本实例展示了如何在Struts2框架下,通过Ajax发送请求获取JSON数据,并将数据返回到JSP页面,以填充下拉列表(`<s:select/>`标签)。 ...
如果表单提交的数据是数组或集合,Struts2的Parameters拦截器会自动处理并将其转化为对应的集合类型。 4. **JSP页面**:在JSP页面中,你可以使用Struts2的标签库来遍历和显示集合中的元素。例如,使用`s:iterator`...
### Struts标签之CheckboxList选中值与换行处理详解 #### 一、引言 在Web应用开发中,表单元素的选择对于用户交互至关重要。Struts框架作为Java Web开发中的一个重要工具,提供了丰富的标签库来帮助开发者快速构建...
Struts1.2标签是Java Web开发中Struts框架的一部分,它提供了一种在JSP页面中更加便捷、可维护的方式来处理业务逻辑和控制流程。Struts1.2标签库大大简化了视图层的开发,使开发者可以避免过多地在JSP中编写Java脚本...
在Struts2中,文件上传功能是通过`FileUpload`拦截器实现的,它可以让我们处理用户通过表单提交的文件。这个"Struts2文件上传示例"包含了如何在实际项目中实现这一功能的代码和配置。 首先,我们需要了解Struts2中...
Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列预定义的标签,用于处理表单、链接、显示数据等常见的web交互。这些标签不仅简化了HTML代码,还提供了与Struts2框架的深度集成,如数据绑定、验证...
### Struts2 标签详解:表单UI与非表单UI #### 一、概述 Struts2作为Java Web开发中的一个重要框架,为开发者提供了丰富的标签库来简化Web页面的构建过程。根据官方文档所述,“UI标签又可以分为表单UI和非表单UI...
Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列预定义的标签,用于处理视图层的展示逻辑,如表单处理、数据验证、国际化等。这些标签通常比纯HTML和脚本更易于维护,且与Action类解耦,提高了代码...
在这个例子中,我们将使用Ant构建Struts2的标签示例: 1. 首先,确保安装了Ant并配置了环境变量。 2. 解压`Using_Tags_Struts2_Ant`压缩包,里面包含了项目的源代码和构建脚本(build.xml)。 3. 在命令行中运行`...
### Struts2 标签使用详解 #### 一、引言 在Web开发领域,Struts2框架以其灵活且强大的特性被广泛采用。Struts2提供了丰富的标签库,这些标签不仅可以帮助开发者简化页面代码,还能提高项目的可维护性和扩展性。...
用户通过表单提交包含`<input type="file">`的HTML,Struts2会自动处理请求并将文件内容存储到指定的临时目录。 2. 多文件上传: 对于多文件上传,可以使用`List<File>`或`File[]`类型的属性。在表单中,用户可以...
下面我们将详细探讨如何在Struts框架中实现文件上传,并通过代码示例进行解析。 首先,我们需要在Struts配置文件(struts-config.xml)中定义一个Action,这个Action将处理文件上传请求。例如: ```xml ``` ...