• springmvc参数绑定


     spring参数绑定过程

    从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。

    springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收!!!!

    默认支持的类型

    HttpServletRequest

    通过request对象获取请求信息

    HttpServletResponse

    通过response处理响应信息

    HttpSession

    通过session对象得到session中存放的对象

    Model/ModelMap

    model是一个接口,modelMap是一个接口实现 。

    作用:将model数据填充到request域。

    简单类型

    通过@RequestParam对简单类型的参数进行绑定。

    如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。

    如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。

    通过required属性指定参数是否必须要传入,如果设置为true

    1     //@RequestParam将传入的参数名称和形参进行绑定
    2     //required指定参数是否必须传入 defaultVaklue 默认值
    3     @RequestMapping("/editItems")
    4     public String editItems(Model model,@RequestParam(value="id",required=true) Integer items_id) throws Exception {
    5         //调用service查询商品信息
    6         ItemsCustom itemsCustom = itemsService.findItemsById(items_id);
    7         model.addAttribute("itemsCustom", itemsCustom);
    8         return "items/editItems";
    9     }

      pojo绑定

    页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo。

     1     @RequestMapping("/editItemsSubmit")
     2     public String editItemsSubmit(HttpServletRequest request,Integer id,ItemsCustom itemsCustom) throws Exception {
     3         
     4         itemsService.updataItems(id, itemsCustom);
     5         //重定向到商品查询列表
     6         //return "redirect:queryItems.action";
     7         //页面转发
     8         //return "forward:queryItems.action";
     9         
    10         return "success";
    11     }

    自定义参数绑定实现日期类型绑定

    对于controller形参中pojo对象,如果属性中有日期类型,需要自定义参数绑定。

    将请求日期数据串传成 日期类型,要转换的日期类型和pojo中日期属性的类型保持一致。

    所以自定义参数绑定将日期串转成java.util.Date类型。

    需要向处理器适配器中注入自定义的参数绑定组件。

    自定义日期类型绑定 

     1 public class CustomDateConverter implements Converter<String, Date> {
     2 
     3     public Date convert(String source) {
     4         //实现将日期格式的类型转换为"yyyy-MM-dd HH:mm:ss"
     5         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     6         try {
     7             return simpleDateFormat.parse(source);
     8         } catch (ParseException e) {
     9             e.printStackTrace();
    10         }
    11         //参数绑定失败返回null
    12         return null;
    13     }
    14     
    15 }

    配置方式

     1 <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
     2 <!-- 自定义参数绑定 -->
     3     <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
     4         <!-- 转换器 -->
     5         <property name="converters">
     6             <list>
     7                 <!-- 日期类型转换 -->
     8                 <bean class="cn.cuibusi.ssm.controller.converter.CustomDateConverter"/>
     9             </list>
    10         </property>
    11     </bean>
  • 相关阅读:
    Ajax传值以及接受传值,@ResPonseBody 和 @RequestBody
    分页
    延迟加载
    mybatis的一级缓存和二级缓存
    拦截器的使用
    Session和Cookie
    逆向工程
    springmvc注解详解
    Java——变量
    Go通关04:正确使用 array、slice 和 map!
  • 原文地址:https://www.cnblogs.com/cuibin/p/6854097.html
Copyright © 2020-2023  润新知