1. 第一种方法:在形参中 添加HttpServletRequest request参数,通过request接收查询条件参数。
2. 第二种方法:在形参中让包装类型的pojo接收查询条件参数。
1) 页面参数:
商品名称:"itemsCustom.name"/>
2) ItemsQuery:
3) controller方法形参:
publicModelAndView queryItems(HttpServletRequest request,ItemsQueryVoitemsQueryVo) throws Exception
1. 思路:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id。
2. 方法:
1) 页面定义
2) 定义Controller
1. Handler通过包装实体类pojo来接收数据。
2. 在包装类中添加List集合属性,用来接收页面传来的批量对象数据。即通过包装pojo接收,在包装pojo中定义list
3. 页面定义
1. 位置:多在Service层进行校验。
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中指定需要的校验分组
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配置全局异常处理器