Comment convertir une date dans BeanWrapperFieldSetMapper

Comment convertir la date dans BeanWrapperFieldSetMapper

Lisez le travail par lots Spring suivant, il lit les données de «domain.csv» et le mappe à un objet de domaine.

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;

    //...
}

Problème

Le problème est de savoir comment mapper / convertir la date de chaîneMon Jul 15 16:32:21 MYT 2013 enjava.util.Date? L'exécution de la tâche ci-dessus affiche les messages d'erreur suivants:

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

Solution

Pour personnaliser la façon dont les valeurs FieldSet sont converties en le type souhaité pour l'injection dans le prototype, il existe plusieurs choix. Vous pouvez injecter des instances PropertyEditor directement via la propriété customEditors…

Pour y remédier, déclare unCustomDateEditor et injecte dansBeanWrapperFieldSetMapper via la propriété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
N'injecte pas lesCustomDateEditor viaCustomEditorConfigurer (globalement), cela ne fonctionnera pas.