Springmvc学习笔记(4)之复杂参数类型绑定、校验、数据回显和异常处理
2016-01-23 19:00
851 查看
复杂类型参数绑定
包装类型pojo
1. 第一种方法:在形参中 添加HttpServletRequest request参数,通过request接收查询条件参数。2. 第二种方法:在形参中让包装类型的pojo接收查询条件参数。
1) 页面参数:
商品名称:<input name="itemsCustom.name"/>
2) ItemsQuery:
3) controller方法形参:
publicModelAndView queryItems(HttpServletRequest request,ItemsQueryVoitemsQueryVo) throws Exception
数组绑定
1. 思路:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id。2. 方法:
1) 页面定义
2) 定义Controller
List集合绑定(Map同理)
1. Handler通过包装实体类pojo来接收数据。2. 在包装类中添加List集合属性,用来接收页面传来的批量对象数据。即通过包装pojo接收,在包装pojo中定义list<pojo>属性
3. 页面定义
Springmvc校验
1. 位置:多在Service层进行校验。使用Hibernate的校验框架
1 配置信息的设置1) 导包:hibernate的校验框架validation所需要jar包
2) 编写校验错误提示信息的配置文件CustomValidationMessages.properties
3) 配置校验器
4) 将校验器注入到处理器适配器中
2 指定校验的属性与限制条件
1) 在实体类中需要校验的属性上设置校验内容。
2) 捕获校验错误信息
a 在需要校验的pojo前添加@Validated。
b 在需要校验的pojo后添加BindingResult,接收错误信息。
c @Validated与BindingResult成对出现,顺序不可变。
分组校验
1. 解决的问题:在pojo中定义校验规则,而pojo是被多个 controller所共用,当不同的controller方法对同一个pojo进行校验,可能需要不同的校验。2. 方法:
1) 定义检验分组接口
2) 在校验规则中指定分组
3) 在不同的Controller中指定需要的校验分组
数据回显
Pojo对象的回显
1. springmvc默认支持对pojo数据进行回显。1) 规则:pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写)
2) 使用@ModelAttribute指定pojo回显到页面在request中的key
2. @ModelAttribute还可以将方法的返回值在request中的key,将返回值传到页面
3. 使用最简单方法使用model,可以不用@ModelAttribute
model.addAttribute("items",itemsCustom);
简单数据类型回显
只能使用model:model.addAttribute(“id”,id);异常处理
异常处理的思路
在Springmvc中提供全局处理器HandlerExceptionResolver接口,记性统一的异常处理。一个系统只能有一个异常处理器。
思路
1. 系统遇到异常,在程序中手动抛出,dao抛给service、service给controller、controller抛给前端控制器,前端控制器调用全局异常处理器。2. 全局异常处理器处理思路:
1) 解析出异常类型
2) 如果该 异常类型是系统 自定义的异常,直接取出异常信息,在错误页面展示
3) 如果该 异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)
实现步骤
1. 自定义一个异常类,继承Exception。2. 编写全局异常处理器的类,该类要求实现springmvc提供一个HandlerExceptionResolver接口。
3. 在Springmvc.xml配置全局异常处理器
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- Zend的MVC机制使用分析(二)
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC中图表控件的使用方法
- ASP.NET MVC的四种验证编程方式
- ASP.NET MVC 3仿Server.Transfer效果的实现方法
- 如何在MVC应用程序中使用Jquery
- ASP.NET MVC小结之基础篇(二)
- ASP.NET小结之MVC, MVP, MVVM比较以及区别(一)
- Asp.net实现MVC处理文件的上传下载功能实例教程
- ASP.NET MVC小结之基础篇(一)