Как конвертировать дату в BeanWrapperFieldSetMapper

Как конвертировать дату в BeanWrapperFieldSetMapper

Прочтите следующее пакетное задание Spring, оно считывает данные из «domain.csv» и сопоставляет их с объектом домена.

job-example.xml



  
  
    

    
      
        
      
    
    
      
        
      
    

    
  



 

domain.csv

1,facebook.com,Mon Jul 15 16:32:21 MYT 2013
2,google.com,Mon Jul 15 16:32:21 MYT 2013
3,youtube.com,Mon Jul 15 16:32:21 MYT 2013
4,yahoo.com,Mon Jul 15 16:32:21 MYT 2013
5,amazon.com,Mon Jul 15 16:32:21 MYT 2013

Domain.java

import java.util.Date;

public class DomainRanking {

    private int id;
    private String domainName;
    private Date lastModifiedDate;

    //...
}

проблема

Проблема в том, как отобразить / преобразовать String DateMon Jul 15 16:32:21 MYT 2013 вjava.util.Date? При запуске над заданием появятся следующие сообщения об ошибках:

Cannot convert value of type [java.lang.String] to required type [java.util.Date]
        for property 'lastModifiedDate':
    no matching editors or conversion strategy found

Решение

Обратитесь кBeanWrapperFieldSetMapper JavaDoc:

Чтобы настроить способ преобразования значений FieldSet в требуемый тип для внедрения в прототип, существует несколько вариантов. Вы можете внедрить экземпляры PropertyEditor напрямую через свойство customEditors…

Чтобы исправить это, объявляетCustomDateEditor и вводит вBeanWrapperFieldSetMapper через свойствоcustomEditors.

job-example.xml


  
    
              
    
  
  




  
  
    
    
      
        
      
    
    
      
        
        
          
            
                 
            
          
        
      
    

    
  


P.S The String Date “Mon Jul 15 16:32:21 MYT 2013” is represented by “EEE MMM dd HH:mm:ss z yyyy”.

Note
Не вводитеCustomDateEditor черезCustomEditorConfigurer (глобально), это не сработает.