`

form提交多个对象

阅读更多

声明:这篇博文写的对别人没有什么参考价值,仅仅给自己留个思路。

 

最近弄一个项目,基本业务是这样子的:

我选了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啦。

 

分享到:
评论

相关推荐

    Spring MVC 3.0 单表单 同时提交 不同对象到后台

    自定义 RequestBean 注解 及 WebArgumentResolver 完成如下格式表单提交 &lt;form&gt; ...最简单的 是 新定义 一个 过渡对象 Objects 其包含 user group.....等 然后用如上 格式提交 最终 到后台 进行各取所需

    vue复杂的form表单封装和使用

    2、动态设置表单排列样式; 3、使用slot,灵活修改元素; 4、组件可以直接使用,使用简单,方便,有使用示例和注释...5、经过多个项目使用,功能稳定; 6、减少代码量,方便维护; 7、遇到使用问题可以随时帮助解答。

    js使用formData实现批量上传

    利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个”表单”.比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二...

    jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象

    Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程。 测试环境:部署到Tomcat中的web项目。 本文演示的是:jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象 ajax...

    jQuery ajaxForm()的应用

    提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程。本文就是介绍了ajaxForm()的应用. 一、ajaxForm() 介绍 ajaxForm预处理将要使用 AJAX 方式提交的表单,将所有需要用到的事件监听器添加到...

    ASP.NET中实现Form表单字段值自动填充到操作模型中

    我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中 比如 代码如下: action方法 Register(UserModel userModel) {  ……………………….....

    PHP使用HTML5 FormData对象提交表单操作示例

    参数是一个form节点对象 var fm = document.getElementById('formid'); var fd = new FormData(fm); 优点: (1)在以往的ajax做post请求时,当提交的数据比较多时,需要拼接请求的字符串,如:k1=v1&k2=v2...,...

    el-form 多层级表单的实现示例

    前言 ...el-form 使用,详情可参见: Form 表单 有几个比较重要的属性: ref 相当于标签的 id model 表单数据对象 rules 表单验证规则 prop 表单域 model 字段 label 标签文本 在提交按钮的

    php+html5使用FormData对象提交表单及上传图片的方法

    FormData 对象,可以把form中所有表单元素的name与value组成一个queryString,提交到后台。在使用Ajax提交时,使用FormData对象可以减少拼接queryString的工作量。 使用FormData对象 1.创建一个FormData空对象,然后...

    mobx-react-form:React性MobX表单状态管理

    ••• • MobX React表格 React式MobX表单状态管理 产品特点 可扩展验证插件。 同步和异步验证(带有承诺和自动错误)。 嵌套字段(带有序列化和验证)。... 下面,我们使用validatorjs包创建一个plugins对象

    springboot同时上传文件以及表单数据

    非常详细的描述了表单上传文件以及携带表单数据的案例,含有注释,前后端的代码,不懂可以加我问,随时回答

    访问者模式java源码-formbuilder:Jahia表单生成器存储库

    如果创建多个动作,它们将按照创建的顺序执行,表单提交后返回的结果将是最后一个动作执行的结果。 例如,如果要使用“保存到存储库”操作和“重定向到页面”操作,则必须按以下顺序放置它们:“保存到存储库”、...

    HTML5&CSS3网页制作:output元素.pptx

    定义输出域相关的一个或多个元素。 form form_id 定义输入字段所属的一个或多个表单。 name name 定义对象的唯一名称。(表单提交时使用) output 元素 &lt;option&gt; 标记能够在不带任何属性的情况下使用,但是通常需要 ...

    activeform:轻松创建嵌套表单

    考虑一个示例,您要创建/更新一个会议,该会议可以有多个演讲者,这些演讲者可以通过一个表单提交来呈现单个演示文稿。 您首先定义一个表单来表示根模型Conference : class ConferenceForm &lt; ActiveForm :: ...

    vue elementUI 表单校验的实现代码(多层嵌套)

    elementUI对表单的校验有自己的方法,要求传入model的必须为一个对象。但如果数据结构比较复杂,对象里面又嵌套对象,该如何校验?本文给出多层对象嵌套的方法。 example &lt;el-form :model=formData :rules=...

    Spring下的子框架SpringMVC实现多文件上传完整代码

    执行这个方法的话,upload会通过参数绑定的方式传给文件上传的方法,在方法中定义一个参数,我们需要一个固定的对象,MutipartFile upload. 它通过参数绑定的方式,把解析后的文件传给我们这个方法,这个upload就指...

    表单验证大全

    if ((contain(document.form.NAME.value, "%\(\)&gt;)) || (contain(document.form.MESSAGE.value, "%\(\)&gt;))) { alert&#40;"输入了非法字符"&#41;; document.form.NAME.focus(); return false; } return true; } //--...

    java-servlet-api.doc

    当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。 Servlet也可以执行ServletRequest接口和ServletResponse接口。...

    ExtJSWeb应用程序开发指南(第2版)

    6.13.1 实例化一个键盘绑定对象 6.13.2 废弃原有键盘绑定 6.13.3 将废弃的键盘绑定重新生效 6.14 Ext.KeyMap提供更灵活强大的对按键的处理方法 6.14.1 构造函数 6.14.2 给对象添加键盘绑定 6.14.3 废弃已绑定...

    php实验表单页面

    实验1-2:熟悉form标记、CSS样式及JS的应用,1、 仿照下图做一个注册网页(register.php),该页面包含一个表单,表单中包含以下信息

Global site tag (gtag.js) - Google Analytics