1. 参数绑定过程:
2. 默认支持的类型:
直接在Controller方法形参上定义下边类型的对象,就可以使用这些对象。
2.1. HttpServletRequest
通过request对象获取请求信息
2.2. HttpServletResponse
通过response处理相应信息
2.3. HttpSession
2.4. Model/ModelMap
model是一个接口,modelmap是一个接口实现。
作用:将model数据填充到request域。
2.5 简单数据类型
可以通过@RequestParam对简单类型的参数进行绑定。如果不使用@RequestParam,要求request传入参数名称和Controller方法的形参名称一致,才可以绑定成功。
如下:
/**
* 删除
*/
@RequestMapping("/user_delete")
public ModelAndView user_delete(@RequestParam(value = "id") Long id) {
ModelAndView modelAndView = new ModelAndView();
userService.delete(id);
modelAndView.setViewName("redirect:user_list");
return modelAndView;
}
2.7 pojo绑定
要求页面中input的name和Controller中pojo形参中属性名称一致,才可以将页面中的数据绑定到pojo,如下:
jsp页面:
<tbody>
<tr>
<td width="100">岗位名称</td>
<td><input type="text" name="name" class="InputStyle">*</td>
</tr>
<tr>
<td>岗位说明</td>
<td><textarea name="description" class="TextareaStyle"></textarea></td>
</tr>
</tbody>
/**
* 添加
*/
@RequestMapping(value="/role_add")
public ModelAndView role_add(HttpServletRequest request,Role role){
ModelAndView modelAndView = new ModelAndView();
roleService.add(role);
modelAndView.setViewName("redirect:role_list");
return modelAndView;
}
pojo类:
public class Role implements Serializable {
private static final long serialVersionUID = -7625883839295666830L;
private Long roleId;
private String name;
private String description;
如上,此时页面中input的name参数,和Controller中Role对象对应的属性名称name必须保持一致,才可以绑定成功。
2.8 自定义参数绑定,实现日期类型绑定:
对于Controller形参中pojo对象,如果属性中有日期类型,需要自定义参数绑定,将请求日期数据转换成日期类型,要转换的日期类型好pojo中日期属性的类型要保持一致。如下:
/**
* 自定义日期转换器
* @author cr
*
*/
public class CustomDateConverter implements Converter<String,Date>{
@Override
public Date convert(String source) {
// 实现将日期字符串转换成日期类型(格式:yyyy-MM-dd HH:mm:ss)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
//转换成功,直接返回
return simpleDateFormat.parse(source);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//转换失败,返回null
return null;
}
}
2.9 集合类型参数绑定:
2.9.1 数组:直接在形参中定义,如方法:user_delete(Integer[] userIds)。
2.9.2 list绑定:input的name和controller方法形参的pojo的属性list名称保持一致。
2.9.3 map/set绑定:同list。