springmvc(3)----参数绑定

来源:互联网 发布:软件售前工程师简历 编辑:程序博客网 时间:2024/06/05 05:35

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>{@Overridepublic 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 blocke.printStackTrace();}//转换失败,返回nullreturn 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。


1 0