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 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の値をプロトタイプに注入するために必要な型に変換する方法をカスタマイズするには、いくつかの選択肢があります。 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”.
NoteCustomEditorConfigurer
を介して(グローバルに)CustomDateEditor
を注入しないでください。機能しません。