`
rochoc
  • 浏览: 10533 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring MVC3复杂表单终极解决办法

阅读更多
直接通过Form Bean进行表单可以简化表单提交的处理,特别是对于复杂表单,过于简单的表单就不建议了,因为毕竟需要额外创建一个Form Bean。前段时间项目中有一个比较复杂的表单,有多层次而且涉及数组,如果不采用Form Bean的处理方式会比较麻烦,但多层而且是数组,之前一直没有找到如何通过Form Bean方式进行处理,但相信Spring MVC应该可以做到,因为Spring的强大之处就是IOC嘛,所以在网上查阅资料,并不断尝试后终于解决,现在不管是多么复杂的表单均可以通过Form Bean的方式进行处理,大大简化复杂表单的处理。
解决方案就是采用Spring的注解@ModelAttribute,这个注解相信大家都比较熟悉,因为Spring很多关于Form处理都有关于它的例子,但这些例子给出的表单都比较简单,而且采用了Spring的Form标签,而我比较喜欢原始的JSP和HTML。闲话少说,现在正式开始我们的复杂Form处理,我的Form Bean结构如下:
FormBean的结构如下:
private String name;
private int age;
private String[] associate;
private ComBen[] bens; //另一个数组对像
ComBen的结构如下:
    private String com;
private int[] typevalue;
private String[] typename;
private ThirdBen[] thdben;//再一层数组对像
ThirdBen的结构如下:
    private String thdname;
private String value[];//又一层数组值
相信已经足够复杂了,我们只需要将FormBean在Controller中标识为@ModelAttribute,如下:
@RequestMapping(value="/test/testForm.do", method = RequestMethod.POST)
public String testFormBean(@ModelAttribute("fbean")FormBean ben) (注意:@ModelAttribute中的标识名,这个要与jsp中的Form id相同)。

再看看我们的JSP页面中的Form如何编写(form要给定一个id,这个id要与@ModelAttribute中的名称一致):
<!-- 复杂form对像测试 -->
<form id="fbean" method="POST" action="/test/testForm.do">  
<input name="name" value="name"/>
<input name="age" value="12"/>
<input name="associate[0]" value="ass1"/>
<input name="associate[1]" value="ass2"/>
<input name="associate[2]" value="ass3"/>
<input name="bens[0].com" value="bean common1"/>
<input name="bens[0].typevalue" value="1"/>
<input name="bens[0].typename" value="tname1"/>
<input name="bens[0].typevalue" value="2"/>
<input name="bens[0].typename" value="tname2"/>
<input name="bens[0].typevalue" value="3"/>
<input name="bens[0].typename" value="tname3"/>
<input name="bens[0].thdben[0].thdname" value="thdname1"/>
<input name="bens[0].thdben[0].value" value="thdvalu11"/>
<input name="bens[0].thdben[0].value" value="thdvalu12"/>
<input name="bens[0].thdben[1].thdname" value="thdname2"/>
<input name="bens[0].thdben[1].value" value="thdvalu21"/>
<input name="bens[0].thdben[1].value" value="thdvalu22"/>
<input name="bens[1].com" value="bean common2"/>
<input name="bens[1].typevalue" value="21"/>
<input name="bens[1].typename" value="tname21"/>
<input name="bens[1].typevalue" value="23"/>
<input name="bens[1].typename" value="tname23"/>
<input type="submit" value="提交"/>
</form> 
简洁吧,我们只要把上述form提交到Controller,就可以在Controller中直接得到这个复杂的FormBean对像;看完这个例子,相信大家可以处理任何的复杂表单了。

实例源代码我已经打包到SpringComplexForm.zip中,供大家参考。
0
0
分享到:
评论
1 楼 pengpengchong 2013-11-05  
你这个后台去获取保存啊?

相关推荐

    精通Spring MVC 4

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    spring mvc 3_demo

    spring mvc 3_demo 注解实现

    [免费]Spring MVC学习指南(高清)

    全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...

    spring mvc jar包

    spring mvc 开发jar包

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    Spring MVC 入门实例

    首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    spring mvc源代码

    spring mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码

    Spring MVC jar包

    关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8

    大优惠 Spring MVC学习指南(第2版)2017.pdf

    全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...

    Spring MVC所需jar包

    Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

    Spring MVC 4.2.3

    Spring mvc jar包

    Spring MVC+MyBatis开发从入门到项目实战

    第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...

    Servlet JSP和Spring MVC初学指南

    Servlet JSP和Spring MVC初学指南

    spring MVC数据绑定大全

    spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...

    Spring MVC入门教程

    十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...

    spring mvc

    spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。

Global site tag (gtag.js) - Google Analytics