zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/cuibin/p/6854097.html
Copyright © 2011-2022 走看看