- 浏览: 802084 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (120)
- Spring (10)
- ExtJs (2)
- Struts (15)
- Hibernate (4)
- 数据库 (2)
- Java (7)
- JSP (4)
- JavaScript (7)
- Oracle (5)
- 面试总结(收集的) (0)
- XML (3)
- 常用小技巧 (8)
- Ruby On Rails (4)
- JBPM (1)
- hsqldb (1)
- Java与模式 (5)
- Linux (5)
- WebLogic (2)
- FreeMarker (1)
- Android (1)
- PHP (1)
- Lucene (9)
- WebService----CXF (9)
- DB2 (4)
- MyBatis (1)
- JVM (3)
- GIT (1)
- JMS及ActiveMQ (4)
- Shiro (1)
最新评论
-
yadongliang:
楼主,我的地址栏http://localhost:8080/p ...
CXF之三(REST风格的支持) -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
CXF之三(REST风格的支持) -
renguoliang0508:
renguoliang0508 写道你好,我又来了,按你这里的 ...
CXF之六(对请求参数和返回给客户数据处理) -
renguoliang0508:
你好,我又来了,按你这里的实现。POST形式中获取不到参数。请 ...
CXF之六(对请求参数和返回给客户数据处理) -
renguoliang0508:
首先对您标示感谢,从拦截器的实现那篇参照做的,过程有点异常最终 ...
CXF之六(对请求参数和返回给客户数据处理)
在struts框架中常常会遇到多行表单的情况, 如何有效的利用struts框架提供的自动收集机制来处理呢? 这里提供一个示例.
1.示例功能:通过一个【提交】按钮保存多行人员信息,如附件中的图片所示。
2.核心类代码:
TestForm.java
Java代码
- public class TestForm extends ActionForm{
- private List voList = null;
- public List getVoList() {
- return voList;
- }
- public void setVoList(List voList) {
- this.voList=voList;
- }
- }
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代码
- 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");
- }
- }
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代码
- <%@ 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>
<%@ 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代码
- 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");
- }
- }
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代码
- <%@ 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>
<%@ 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.如果同时需要删除、添加行的功能:
实现添加不难但实现删除较难,建议有这样需求的还是不要同时提交多行的较好。
发表评论
-
精通struts技术之 ServletContext
2009-08-07 15:37 2234ServletContext是定义在javax.servlet ... -
HttpSessionListener 和HttpSessionBindingListener的区别
2009-08-04 08:49 2275使用HttpSessionListener编写一个Onlin ... -
使用HttpSessionBindingListener 方法
2009-08-04 08:47 14670捕获Session事件的意义: 1、 记录网站的客户登录 ... -
struts plugin
2009-07-31 09:18 1427第二篇 struts的执行 本篇详细介绍str ... -
web.xml中load-on-startup标签的含义
2009-07-31 09:11 1338在servlet的配置当中,<load-on-start ... -
使用Struts的PlugIn进行Web应用的扩展
2009-07-31 09:02 1326Struts提供了PlugIn的方式来扩展Struts的功 ... -
RequestProcessor及其在struts-config.xml中的配置
2009-07-30 17:37 1679RequestProcessor及其在struts-confi ... -
Struts1.整合Spring的三种方法
2009-06-23 13:37 1538使用 Spring 的 ActionSupport 类 ... -
五个有用的过滤器 Filter
2009-06-13 11:22 1189一、使浏览器不缓存页面的过滤器 import java ... -
利用令牌机制解决重复重复提交问题
2009-06-13 10:53 2077用Token解决重复重复提交:Struts利用同步令牌(Tok ... -
log4j的日志处理
2009-05-08 11:20 1702在日常的开发中经常需要通过输出一些信息进行程序的 ... -
Struts2中使用request,response对象方法
2009-05-07 14:05 1495***************1.[一般推荐使用](只能获得r ... -
Struts2中多次提交问题
2009-05-07 14:02 1363struts.xml如下: <?xml version= ... -
struts1的工作流程
2009-04-29 10:43 1754在web应用启动时就会加载初始化ActionServlet,A ...
相关推荐
为了实现在Struts框架下多行数据的动态添加与提交,我们可以利用JavaScript来动态生成表单元素。具体来说,就是通过JavaScript函数在用户界面上动态添加新的表单行,每一行包含多个输入框,用于收集不同的数据字段。...
当我们需要在客户端提交多行数据时,通常会利用表单来收集信息,然后将这些数据传递到服务器端的ActionForm。这个过程涉及到如何将客户端的数据组织成一个集合,如List,并将其绑定到ActionForm的属性上。在本篇中,...
这篇博客将深入探讨Struts2中的表单标签及其使用方法。 首先,我们需要理解Struts2表单标签的基本结构。通常,一个表单标签以`<s:form>`开头,并以`</s:form>`结束。它允许我们指定表单的属性,如`action`(表单...
- `s:submit`:创建提交按钮,触发表单提交。 - `s:form`:创建表单,可以自动处理Action的验证和结果跳转。 - `s:property`:显示Action属性的值。 - `s:action`:执行一个Action并显示结果。 - `s:debug`:...
首先,Struts2的表单标签主要分为两种类型:简单表单标签(s:textfield, s:password, s:textarea等)和复杂表单标签(s:form, s:submit, s:checkbox, s:radio等)。这些标签都是基于OGNL(Object-Graph Navigation ...
- 在处理表单提交时,利用Struts2的表单标签,框架会自动处理数据验证和类型转换。 6. **注意事项**: - 确保在web.xml中配置了Struts2的核心过滤器`<filter-class>org.apache.struts2.dispatcher.ng.filter....
5. `<s:radio>`和`s:checkbox`:创建单选按钮和复选框,通常与`list`属性一起使用,显示可选的选项。 6. `<s:select>`:创建下拉选择框,可以动态加载选项。 7. `<s:submit>`:创建提交按钮,触发Action的执行。 8. ...
本篇将深入讲解如何在Struts2中使用Tag,以及它们在"HelloWorld"案例中的应用。 1. **Struts2 Tags介绍** Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列预定义的标签,用于处理表单、链接、...
7. `s:submit`: 提交表单的按钮,可以指定动作和样式。 8. `s:form`: 表单标签,自动处理请求转发和验证。 9. `s:action`: 运行Struts2 Action,通常用于页面间的跳转。 10. `s:i18n`: 国际化标签,支持多语言环境。...
本教程将深入讲解Struts2官方例子3,主要关注如何使用Struts2提供的标签。 一、Struts2标签库概述 Struts2的标签库是基于JSP标准标签库(JSTL)的扩展,提供了丰富的标签来处理表单、验证、国际化等功能。这些标签...
下面我们将深入探讨Struts2的使用标签及其在实际开发中的应用。 一、Struts2标签库介绍 Struts2提供了丰富的标签库,这些标签主要用于处理用户界面,减少开发者与JSP页面之间的交互代码。主要包含以下几类标签: 1...
它们的用法与`s:checkbox`和`s:checkboxlist`相似,只是在表单提交时,只会有一个单选按钮的值被提交。 6. `s:form`: 表单标签,用于包裹所有表单元素。它的`action`属性指定了提交的Action,`method`属性可以设置...
- `struts_taglib`:这个目录可能包含了Struts1的标签库JAR文件,它是使用Struts1标签所必需的库。 了解并熟练掌握Struts1的标签库是提升Java Web开发效率的关键,通过合理的使用,能够有效地降低代码复杂度,提高...
使用Struts2标签,可以实现更清晰、更可维护的JSP页面。 2. **s:form标签** s:form是Struts2中最常用的标签之一,用于创建HTML表单。它不仅可以生成表单元素,还可以绑定到Action类的属性,实现数据提交。例如: ...
5. `<s:submit>`:创建提交按钮,触发表单的提交动作。 6. `<s:form>`:定义一个表单,可以设置表单的动作、方法以及验证规则。 7. `<s:select>`和`<s:option>`:创建下拉选择列表,支持动态加载选项。 8. `...
### Struts2 标签详解:表单UI与非表单UI #### 一、概述 Struts2作为Java Web开发中的一个重要框架,为开发者提供了丰富的标签库来简化Web页面的构建过程。根据官方文档所述,“UI标签又可以分为表单UI和非表单UI...
- `s:checkbox`和`s:checkboxlist`: 处理复选框,可以单个使用或以列表形式显示。 - `s:radio`: 用于创建单选按钮,同样支持列表展示。 - `s:select`和`s:option`: 创建下拉选择列表,可以从Action类的集合属性动态...
5. **使用Struts2标签的优点** - 提高可读性和可维护性:标签使得代码更清晰,降低了视图层与业务逻辑的耦合。 - 动态数据绑定:通过OGNL表达式,可以方便地访问和操作模型对象的属性。 - 强大的表单处理能力:...
2. **表单标签(Form Tags)**:专门处理HTML表单的标签,例如`<s:textfield>`用于创建文本输入框,`<s:textarea>`创建多行文本输入框,`<s:submit>`定义提交按钮,还有`<s:checkbox>`和`s:radio>`用于复选框和单选...
通过`Struts.CHM`文档,你可以详细了解到每个标签的属性和用法,以及如何在实际项目中结合使用这些标签来构建复杂的用户界面。在学习过程中,建议结合实际案例进行练习,以加深理解并提高应用能力。