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;

    //...
}

問題

問題は、文字列の日付Mon Jul 15 16:32:21 MYT 2013java.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の値をプロトタイプに注入するために必要な型に変換する方法をカスタマイズするには、いくつかの選択肢があります。 customEditorsプロパティを通じてPropertyEditorインスタンスを直接注入できます…

これを修正するには、CustomDateEditorを宣言し、customEditorsプロパティを介してBeanWrapperFieldSetMapperに挿入します。

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
CustomEditorConfigurerを介して(グローバルに)CustomDateEditorを注入しないでください。機能しません。