Spring注解:InitBinder

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spring注解:InitBinder
注解 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=""> <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 的对象。

相关文档
最新文档