参数绑定

将客户端传来的 key/value 数据,绑定到 Controller 参数的过程 ;

这一过程发生在调用 处理器适配器 的时候,spring 会去调用 参数绑定 组件,我使用的版本(4.5),是使用 converter 进行任意支持类型的转换的,除去一些 时间 不能进行转换 ;

其实 spring 中内置了许多的 converter ,可以看做是转换器,帮我们进行参数绑定 ;

  1. 默认支持类型

    默认支持的类型:HtppServletRequestHtppServletResponseHttpSessionModel或ModelMap ;当 springMvc 发现 Controller 方法的形参是上面的类型时,就会调用响应的 converter 进行参数绑定 ;

  2. 对简单类型的支持

    controller 方法形参是简单类型的时候,SpringMvc 也会进行参数绑定,不过有个限制,形参的名字和 key 的名字要一样 ;

    对于,这样的限制,我们当然不能忍受了,我们才是 code world 的掌控者,怎么能受限于一个参数绑定,这时候可以使用 @RequestParam来破掉这一限制 ;

    @RequestParam 参数讲解:

    name :当形参名字和 key 不一样的时候 ,使用 name 来告诉 springMvc 给我进行参数绑定,按照和 name 相同的 key

    required : 表示形参是否是必须的 ,如果 不是必须的,则可以不传参数进来 ;

    defaultValue :默认值 ,如果形参没有参数传进来,则使用该默认值 ;

  3. pojo类型

    页面中提交的数据的名字,必须和 pojo 的属性名一致 ;页面中提交的数据的名字,必须和 pojo 的属性名一致 ;

    比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name ;比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name ;比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name ;比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name

  4. 自定义参数绑定

    对于一些情况下 , springMvc 内置的 converter 总是不能满足的我们需求,我们需要自定义参数绑定 ,比如时间类型的参数绑定 ;

    实现 org.springframework.core.convert.converter.Converter ,注意不要导错包 ;

    /**
    * 完成日期 的参数绑定
    * @author An
    * @date 2018年9月17日20:11:59
    */
    public class DateConverter implements Converter<String,Date> { /**
    * 日期转换类
    */
    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-MM-dd") ; @Override
    public Date convert(String source) {
    try {
    return simpleDateFormat.parse(source) ;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    // 转换失败,就返回 null ;
    return null ;
    }
    }

    springMvc.xml 中进行配置

    <!--使用注解的映射器、适配器-->
    <!-- 添加 conversion-service 配上下面的id -->
    <mvc:annotation-driven conversion-service="conversionService"/> <!--配置 自定义 参数绑定-->
    <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="conversionService">
    <!--写上自定义的转换器-->
    <property name="converters">
    <list>
    <!--日期 转换 -->
    <bean class="xin.ijava.ssm.converter.DateConverter"/>
    </list>
    </property>
    </bean>
  5. 包装类型 pojo 参数绑定

    其实和 pojo 类型一样 ;

    只是包装类型的 pojo 中嵌套着 pojo ,此时赋值,使用 嵌套的pojo.属性名 ,作为网页的 name 属性的值 ;

    <input id="itemName" type="text" name="itemCustomer.name"/>

    尽量使用包装类型,便于扩展,解决不同类之间属性重名问题 ,比如形参有 userbook ,它们都有属性 name,此时页面中就可以使用pojo.name 为它们赋值;

  6. 数组绑定

    形参是数组的时候,跟基本数据类型一样,形参的名字 和 网页 name 值一样;

  7. list 绑定

    list 绑定,将 list 放在 pojo 中进行绑定,也就是 pojo 中属性为 list,此时形参还是一个包装的 pojo

    要将数据提交到 list 中的对象的属性上,只需要将网页的 name 的值,设为 list[下标].属性

  8. map 绑定

    还是将 map 放在 pojo 中进行绑定,网页上的 name 属性的值为 map['key']

最新文章

  1. Easyui columns列图片移位问题!!!
  2. iOS支付宝支付总结
  3. JSP动作元素之include
  4. c#关于日期的两个知识点
  5. Cheatsheet: 2013 07.21 ~ 07.31
  6. (三)ubuntu学习前传—uboot常见环境变量
  7. sqlserver资源下载
  8. .Net 两个对像之间的映射
  9. 绘图quartz之渐变
  10. Google大数据三篇著名论文----中文版
  11. 高效程序猿之 VS2010快速生成代码模板
  12. Nginx中的信号量(信号控制)
  13. VPS搭建离线下载服务器——后网盘时代
  14. myeclipse中修改maven的默认仓库位置
  15. 用户创建,删除and并发注册and系统登陆的API研究(学习汇总网上资料)
  16. 【redis】在dotnet core下的redis的使用
  17. luogu1196 银河英雄传说 (并查集)
  18. Java根类Object的方法说明
  19. ownCloud安卓android客户端版本2.9.3
  20. [macOS] Error: /usr/local must be writable!&quot; (Sierra 10.12 )

热门文章

  1. Til the Cows Come Home ( POJ 2387) (简单最短路 Dijkstra)
  2. ICEM—三分之一风扇
  3. Exception in thread &quot;main&quot; java.util.ConcurrentModificationException解决方案
  4. Java并发指南12:深度解读 java 线程池设计思想及源码实现
  5. ArcGIS超级工具SPTOOLS-锐角检查,获得内角并判断是否凸多边形,获得线(面)两个折点方向
  6. https证书制作及springboot配置https
  7. /proc/sys/kernel/sysrq /proc/sysrq-trigger----强制重启/触发器
  8. 错误注入 异常行为 环境变量或代码动态激活来触发这些异常行为 模拟错误 容错性 正确性 稳定性 宏 本质 macro
  9. css3实现jQuery的slideUp和slideDown效果
  10. Kali Linux更新5.2.9后 Vmware Workstation无法正常启动