首页 > 网站 > WEB开发 > 正文

将复杂对象如时间日期对应到实体对象的property中

2024-04-27 15:10:04
字体:
来源:转载
供稿:网友

众所周知sPRing可以自动将request中的数据对应到对象的每个property,会自动的bind 一些simple data (Strings, int, float, etc.) 对应到 你所要求的Object中,可是如果面对复杂的对象,那就需要借助于PropertyEditor 来帮助你完成复杂对象的对应关系,这个借口提供了两个方法,将一个property 转成string getAsText(), 另外一个方法是将string类型的值转成property对应的类型。使用起来也很简单,来个例子:

 

@InitBinder  public void bindingPreparation(WebDataBinder binder) {    DateFormat dateFormat = new SimpleDateFormat("MMM d, YYYY");    CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat, true);    binder.registerCustomEditor(Date.class, orderDateEditor);  }  

这样同样面临一个问题,如果我有两个变量,变量名不一样,处理的规则也不一样,但是他们都是Date.class 类型, 这可怎么破。比如:

贴心的spring,提供了一种重载的方法。 for example:

 

@InitBinder  public void bindingPreparation(WebDataBinder binder) {    DateFormat dateFormat1 = new SimpleDateFormat("d-MM-yyyy");    CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat1, true);    DateFormat dateFormat2 = new SimpleDateFormat("MMM d, YYYY");    CustomDateEditor shipDateEditor = new CustomDateEditor(dateFormat2, true);    binder.registerCustomEditor(Date.class, "orderDate", orderDateEditor);    binder.registerCustomEditor(Date.class, "shipDate", shipDateEditor);  }  

 

 

其实只要为每个变量绑定一个不同的Editor就可以了,对于不同的变量进行不同的处理。这样就能够方便的完成request 和 property 之间的binder了。

@InitBinder  public void bindingPreparation(WebDataBinder binder) {    DateFormat dateFormat = new SimpleDateFormat("MMM d, YYYY");    CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat, true);    binder.registerCustomEditor(Date.class, orderDateEditor);  }  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表