Spring MVC 类型转换(type convert)例子及下载
spring 支持类型转换, 最常用的就是从字符串转换成一个对象的属性值。在配置spring
场景:一群人约在一个地方见面。包含两个对象。
约会对象,里面包含了这个对象
public class User {
private String name;
private String phone;
public User(){
}
public User(String name,String phone){
this.name=name;
this.phone=phone;
}
/*getter setter*/
}
public class Reservation {
public String address;
public Date dateToReserve;
public int hour;
public User user;
public Reservation(){
}
public Reservation(String address, Date date, int hour, User user) {
this.address = address;
this.dateToReserve = date;
this.hour = hour;
this.user = user;
}
public String getAddress() {
return address;
}
/*geter setter.*/
}
按照通常的做法,spring 应该如下配置:
上面的做法看上去很好吗?很直观吗?我不觉得,其实更直观的是如下方式:
这种方式更直观,也更好看,但是要使这样的配置能正常工作,就需要用到自定义的类型转换. 这里我实现了两个类型转换,一个是用来转换时间的,另一个是用来转换 user 的。
public class StringToDateTypeConverter implements Converter
public class StringToUserTypeConverter implements Converter
如何能在 spring mvc 下工作呢? 需要在 spring-servlet.xml 中进行如下配置;
注册这谢自定义类型转换之后,spring 遇到相应的关系,就会自动转换。我自己做了一个测试列子,有如下页面:
可以看到在 user 字段,输入是 "summer,130121233443 ", 提交之后,会自动转换成 Reservation对象中User 对象中的属性。
提交后看转换结果。
源码下载,省略了jar 包,用spring 相关jar包就可以了,我用的是3.2的。
spring type convert
通过这种类型转换,可以很方便的实现字符串和对象之间的转换,也许有人说,这不就是拆字符串吗?的确是,但如果很多地方需要这种绑定的时候,好处就体现出来了,如果单独偶尔一个确实没必要用。
另一种思考,起始现在 富客户端越来越流行,完全可以用js 生成 json 然后提交到 spring controller 层,然后将json 对象反序列换成 我们需要的object ,这种方式可能更流行了。