简单例子:修改商品信息的jsp页面:
参数绑定过程:
1.2.1 默认支持的参数类型
处理器形参中添加如下类型的参数处理适配器会默认识别并进行赋值。
1.1.1 HttpServletRequest
通过request对象获取请求信息
1.1.2 HttpServletResponse
通过response处理响应信息
1.1.3 HttpSession
通过session对象得到session中存放的对象
1.1.4 Model
通过model向页面传递数据,如下:
//调用service查询商品信息
Items item = itemService.findItemById(id);
model.addAttribute("item", item);
页面通过${item.XXXX}获取item对象的属性值。
1.1.5 @RequestParam
如果request请求的参数名和controller方法的形参数名称一致,适配器自动进行参数绑定。如果不一致可以通过
@RequestParam 指定request请求的参数名绑定到哪个方法形参上。
对于必须要传的参数,通过@RequestParam中属性required设置为true,如果不传此参数则报错。
对于有些参数如果不传入,还需要设置默认值,使用@RequestParam中属性defaultvalue设置默认值。
1.1.6 可以绑定简单类型
可以绑定整型、 字符串、单精/双精度、日期、布尔型。
1.1.7 可以绑定简单pojo类型
简单pojo类型只包括简单类型的属性。
绑定过程:
request请求的参数名称和pojo的属性名一致,就可以绑定成功。即上面的几幅图就是属性名与参数名一致。
问题:
如果controller方法形参中有多个pojo且pojo中有重复的属性,使用简单pojo绑定无法有针对性的绑定,
比如:方法形参有items和User,pojo同时存在name属性,从http请求过程的name无法有针对性的绑定到items或user。
可以绑定包装的pojo
包装的pojo里边包括了pojo。
数据回显:
1 数据回显
1.1 需求
表单提交出现错误,重新回到表单,用户重新填写数据,刚才提交的参数在页面上回显。
1.2 对简单类型的数据回显
对商品修改数据回显:
注意在进入修改页面的controller方法中和提交修改商品信息方法model.addAttribute方法设置的key一致。
pojo类型数据回显
方法1:
使用Model.addtribute方法进行数据回显:
方法2:
使用注解@ModelAttribute,作用于将请求pojo数据放到Model中回显到页面
在ModelAttribute方法指定的名称就是要填充Model中的key,在页面中就要通过key取数据。