注解 InitBinder 是用来初始化绑定器Binder的,而Binder是用来绑定数据的,换句话说就是将请求参数转成数据对象。

@InitBinder用于在@Controller中标注于方法,表示为当前控制器注册一个属性编辑器或者其他,只对当前的Controller有效。

@InitBinder 有2个基本用途,类型转换和参数绑定。

类型转换

比如,将“2019-12-06 16:59:59”这样的字符串转成 java.util.Date 对象

    @InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

参数绑定

比如,html表单是下面这样的

<form action="/buy" method="post">
name: <input type="text" name="customer.name"> <br>
age: <input type="text" name="customer.customerId"> <br>
name: <input type="text" name="goods.title"> <br>
age: <input type="text" name="goods.price"> <br>
<input type="submit">
</form>

在后台将以customer为前缀的参数绑定到Customer对象上,将以goods为前缀的参数绑定到Goods对象上

    @InitBinder("customer")
public void initCustomer(WebDataBinder binder) {
binder.setFieldDefaultPrefix("customer.");
} @InitBinder("goods")
public void initGoods(WebDataBinder binder) {
binder.setFieldDefaultPrefix("goods.");
} @PostMapping("/buy")
public ModelAndView buy(Customer customer, @ModelAttribute("goods") Goods goods, ModelAndView mv) {
// do something
return mv; }

@ModelAttribute("goods") 中的 “goods” 用来指定 @InitBinder("goods")

换句话讲

在 initGoods 方法中,将以 goods 为前缀的参数封装为名为 goods 的对象;

在 buy 方法中使用 @ModelAttribute("goods") 来接收名为 goods 的对象。

Spring注解:InitBinder的更多相关文章

  1. spring注解说明之Spring2.5 注解介绍(3.0通用)

    spring注解说明之Spring2.5 注解介绍(3.0通用) 注册注解处理器 方式一:bean <bean class="org.springframework.beans.fac ...

  2. springMVC注解@initbinder日期类型的属性自动转换

    在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能. 一 ...

  3. SpringMVC注解@initbinder解决类型转换问题

    在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换,而SpringMVC默认不支持这个格式的转换,所以需要手动配置,自定义数据的绑定才能解决这个问题.在 ...

  4. springMVC注解@initbinder

    在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能. 比 ...

  5. spring注解源码分析--how does autowired works?

    1. 背景 注解可以减少代码的开发量,spring提供了丰富的注解功能.我们可能会被问到,spring的注解到底是什么触发的呢?今天以spring最常使用的一个注解autowired来跟踪代码,进行d ...

  6. Spring注解

    AccountController .java Java代码   1.        /** 2.         * 2010-1-23 3.         */ 4.        packag ...

  7. spring 注解的优点缺点

    注解与XML配置的区别 注解:是一种分散式的元数据,与源代码耦合. xml :是一种集中式的元数据,与源代码解耦. 因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码耦合/解耦. 注解的 ...

  8. 使用Spring注解来简化ssh框架的代码编写

     目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...

  9. spring注解scheduled实现定时任务

    只想说,spring注解scheduled实现定时任务使用真的非常简单. 一.配置spring.xml文件 1.在beans加入xmlns:task="http://www.springfr ...

随机推荐

  1. [C#] 如何把void*转换为byte[]

    一般来说,C#库的对外接口应该提供byte[]这样比较容易用的接口,而不应该提供裸的void* 但是有些库确实是这么封装的.那么就有一个如何转换的问题.MSDN推荐的转换方式是使用UnmanagedM ...

  2. 如何将为Android开发的AIR应用转移到SD卡

    如果你想用户能够将为Android开发的AIR应用转移到SD卡上,所需要做的是在你的应用程序描述符中修改一下.如果你想你的应用程序默认安装到内置存储器中,但是允许用户把它转移到SD卡上,设置andro ...

  3. jekyll 添加 Valine 评论

    本文告诉大家如何在自己搭建的静态博客添加 Valine 评论.在这前,我基本都是使用 多说,但是多说gg啦,所以就在找一个可以替换的评论 本来 Disqus是很好的,但是在国内很难打开,所以我就需要一 ...

  4. 2018-8-10-win10-uwp-win2d-使用-Path-绘制界面

    title author date CreateTime categories win10 uwp win2d 使用 Path 绘制界面 lindexi 2018-08-10 19:17:19 +08 ...

  5. zeppelin开启多个

    conf/zeppelin-env.sh 添加行: export ZEPPELIN_PID_DIR=/xx/zeppelin/run_2

  6. 备战省赛组队训练赛第十七场(UPC)

    upc:传送门 A: 题解[1] G: 题解[1] D,G,H,J,L 题解 by 鲁东大学

  7. visual studio 2010问题修复

    我在重新安装 Visual Studio 2010 和 SQL sever 2012 的时候,安装好的两个软件打开时都遇到了这个问题:“在此计算机中仅有部分 Microsoft Visual Stud ...

  8. 2019-9-24-dotnet-remoting-抛出异常

    title author date CreateTime categories dotnet remoting 抛出异常 lindexi 2019-09-24 15:39:50 +0800 2018- ...

  9. Linux 字节序

    小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高 级的平台以另一种方式(大端)工作. 任何可能的时候, 你的代码应当这样来编写, 它不在 乎它操作的数据的字节序 ...

  10. iview+vue查询分页实现

    本文为实战坑记录 子组件(共用的搜索组件) <template> <div> <h2>{{pdbTitle}}</h2> <Form ref=&q ...