直接通过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中,供大家参考。
分享到:
相关推荐
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
精通Spring MVC 4 中文
spring mvc 3_demo 注解实现
全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...
spring mvc 开发jar包
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 mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码
关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8
全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...
Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包
Spring mvc jar包
第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...
Servlet JSP和Spring MVC初学指南
spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...
spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。