声明:这篇博文写的对别人没有什么参考价值,仅仅给自己留个思路。
最近弄一个项目,基本业务是这样子的:
我选了5个工程,填到一个单子,根据单子的类型生成对应的单子,譬如说我选了两种单子类型,那么久需要生成2张单子,反正每个类型生成一个单子。
到这还没完,这个工程也是要分别生成资料单子的,譬如每个合同都对应一个合同文件,选了5个,就需要生成5份资料单子,也就是5个资料对象。
这就涉及到一个form表单提交好几个对象的问题,当然有了Spring这个问题解决起来也是小case。
说明:
工程单子对应的表:Table51
资料单子对应的表:Table55
1、先实例化一个Table51的对象,并给它get、set方法。再实例化一个List<Table55> table55List对象,也给它get、set方法。然后从Action中根据选定的工程获取每个工程的信息,并添加到Table51对象和table55对象中。通过request传递到页面上去。
2、JSP页面处理,这个是关键。处理Table51对象不是问题,处理Table55的多个对象是个大问题。因为Table55对象有多个,页面中用C:forEach标签循环,并且给input框添加上name属性,name='t55.field1'。这样子加完之后,一循环,这个form表单中就会出现多个name为t55.field1的input框,在提交的时候,这写同名的input内容就会被拼接到一起作为name='t55.field1'的字段值,从后台中直接获取t55.getField1()得到的就是所有name='t55.field1'值的集合。这当然不符合要求,为什么?字符串是用“,”进行连接的,万一我在填单子的时候手动输入了一个逗号,这样子就没法区分了。必须的给input一个既跟table55有关联又跟字段有关联还能一个form表单就提交多个table55对象的名字才行,试了好多回,最后的修改成功如下:
<!--普通情况:获取到的值只有拼接好的一个字段值--> <c:forEach items="${table55List}" var="t55" varStatus="order"> <input type="text" value="${t55.field1 }" name="t55.field1" /> </c:forEach> <!--修改之后:可以获取到多个对象,且每个对象对应字段的值独立--> <c:forEach items="${table55List}" var="t55" varStatus="order"> <input type="text" value="${t55.field1 }" name="table55List[${order.index }].field1" > /> </c:forEach>
修改之后的代码,因为每次循环得到的对象的name都不一样,所以传递到后台的结果也就不一样了。
3、后台接收:这个比较简单,list都拿到了,遍历一遍添加到数据库就OK啦。
相关推荐
本篇文章将深入探讨如何利用jQuery从JSON对象转换为form提交数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和...
对于包含列表的表单,用户可能需要在页面上输入多条数据,如一个订单中包含多个商品。每个商品项可能都有自己的属性,如商品ID、名称、数量等。在HTML表单中,这些数据可以通过数组或列表的格式来表示,比如`[0].id...
在ASP.NET MVC框架中,处理同时提交多个实体的情况是常见的需求,这通常涉及到表单的批量操作、关联数据的更新等。在这个场景下,我们需要理解如何有效地管理模型绑定(Model Binding)来接收并处理这些实体。下面将...
通过以上步骤,我们成功地在一个form表单中实现了同时上传多个文件和文本信息的功能。这种实现方式不仅提高了用户的使用体验,也方便了开发者对上传数据的管理和处理。在实际应用中,还可以进一步扩展该功能,例如...
这三种方法各有特点,$.post()适合简单的POST请求,$.ajax()则提供了更多自定义选项,适用于复杂的请求逻辑,而ajaxForm()则是针对整个表单的提交,特别适合已有的HTML表单,无需手动构建请求数据。 在实际开发中,...
"不用form提交表单,用ajax上传文件"是这种需求的一个典型场景。这种方式可以让用户在上传文件时无需等待页面刷新,而是通过Ajax(Asynchronous JavaScript and XML)技术实现实时反馈,提升交互体验。 在JDK 8版本...
表单中可以包含一个List类型的参数,允许用户输入多个值。在HTML中,这可以通过多次使用相同name属性的input元素实现。在Struts1中,ActionForm类需要有一个对应的List字段来接收这些值,这样在提交表单时,Struts1...
在本文中,我们将探讨在Spring框架下,使用AJAX与传统Form表单提交的区别,以及单方法控制器和多方法控制器的使用场景。首先,我们来看看AJAX提交与Form表单提交的基本概念。 **AJAX(Asynchronous JavaScript and ...
"Ajax Form提交 动态显示"这一主题涉及到如何利用AJAX处理表单提交,并实时更新页面内容。 1. **AJAX基础**: - AJAX的核心是XMLHttpRequest对象,它负责在后台与服务器通信。 - AJAX的工作流程包括创建...
而在使用 Vue.js 搭配 Element UI 进行开发时,我们经常会遇到需要对多个表单进行同时验证的需求。本文将详细介绍如何通过 Promise 的方法实现 Vue Element UI 中的多表单验证。 #### 一、Vue Element UI 表单验证...
具体来说,multipart/form-data格式的请求体由多个部分组成,每个部分前都有一个分隔符,该分隔符包括两部分:一长串随机生成的分隔符以及两个连续的减号。每个部分都会包含自己的Content-Disposition和Content-Type...
application/x-www-form-urlencoded的编码方式有很多优点,如: * 它是标准的编码格式,广泛应用于Web开发中 * 它可以将窗体数据编码为名称/值对,易于服务器解析和处理 * 它可以与get和post请求同时使用 然而,...
它提供了`BeanUtils.copyProperties()`方法,可以直接将一个对象的属性值复制到另一个对象,使得反射操作更为简洁: ```java try { BeanUtils.copyProperties(userForm, request.getParameterMap()); } catch ...
总结来说,"excle文件form表单上传"涉及了JSP表单设计、Servlet处理请求、文件操作、数据读取(Apache POI)、数据库交互(JDBC)以及异常处理等多个关键知识点。掌握这些技能,能帮助开发者实现高效、安全的Excel...
`jquery.form.js`是jQuery的一个插件,它为表单提交提供了更高级的功能,如文件上传支持、多部分形式(multipart/form-data)和多种提交方式。安装此插件后,我们可以使用`.ajaxSubmit()`或`.submit()`方法: ```...
`jQuery-form.js`是一个流行的JavaScript插件,它扩展了`jQuery`库的功能,使得表单的提交、上传和处理变得更加简单和灵活。 ### jQuery-form.js 插件简介 `jQuery-form.js`插件由Malsup创建,它的主要目标是提供...
标题中的“一个Form数据拆分到不同的jsp中”是指在Web开发中,如何将一个大型的表单(Form)逻辑拆分成多个独立的JavaServer Pages(JSP)文件,以便更好地管理和维护页面结构。这种做法有助于提高代码的可读性和可...
HTML表单由多个元素组成,如`<input>`、`<select>`、`<textarea>`等,每个元素都有一个`name`属性,用于标识该元素在表单数据中的位置。当表单提交时,浏览器默认会按照`name`属性的键值对形式编码数据,这就是所谓...
在 Web 应用程序开发中,提交 Form 表单数据到后台服务器是一个常见的操作。通常情况下,我们会使用 Form 表单的 action 属性来指定提交的路径,但是在某些情况下,我们可能需要使用按钮来提交 Form 表单数据。今天...
这通常涉及到在用户交互后,例如点击按钮,通过JavaScript动态生成HTML表单元素,允许用户选择多个图片文件。每个图片文件对应一个`<input type="file">`元素,用户可以选择本地的图片文件。 然后,使用`jQuery....