ConvertUtils.register注冊轉換器


當用到BeanUtils的populate、copyProperties方法或者getProperty,setProperty方法其實都會調用convert進行轉換
但Converter只支持一些基本的類型,甚至連java.util.Date類型也不支持。而且它比較笨的一個地方是當遇到不認識的類型時,居然會拋出異常來。
這個時候就需要給類型注冊轉換器。比如: 意思是所以需要轉成Date類型的數據都要通過DateLocaleConverter這個轉換器的處理
ConvertUtils.register(new DateLocaleConverter(), Date.class);
示例:
  1. import java.util.Date;  
  2.   
  3. public class Person {  
  4.     private String name;  
  5.     private int age;  
  6.     private Date birth;  
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.     public void setName(String name) {  
  11.         this.name = name;  
  12.     }  
  13.     public int getAge() {  
  14.         return age;  
  15.     }  
  16.     public void setAge(int age) {  
  17.         this.age = age;  
  18.     }  
  19.     public Date getBirth() {  
  20.         return birth;  
  21.     }  
  22.     public void setBirth(Date birth) {  
  23.         this.birth = birth;  
  24.     }  
  25. }  
test1沒有給Date注冊轉換器,拋出ConversionException異常,test2沒有異常

  1. @Test  
  2.     public void test1() throws Exception {  
  3.         Map map = new HashMap();  
  4.         map.put("name""xiazdong");  
  5.         map.put("age""20");  
  6.         map.put("birth""2010-10-10");  
  7.         Person p = new Person();  
  8.         BeanUtils.populate(p, map);  
  9.         System.out.println(p.getAge());  
  10.         System.out.println(p.getBirth().toLocaleString());  
  11.     }  
  1. @Test  
  2.     public void test2() throws Exception {  
  3.         Map map = new HashMap();  
  4.         map.put("name""xiazdong");  
  5.         map.put("age""20");  
  6.         map.put("birth""2010-10-10");  
  7.         ConvertUtils.register(new DateLocaleConverter(), Date.class);  
  8.         Person p = new Person();  
  9.         BeanUtils.populate(p, map);  
  10.         System.out.println(p.getAge());  
  11.         System.out.println(p.getBirth().toLocaleString());  
  12.     }  

ConvertUtils除了給指定類型注冊轉換器外,還可以將數據轉換為指定類型
  1. String[] values = new String[]{};  
  2. (long[])ConvertUtils.convert(values, long.class);  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM