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
Reportez-vous auxBeanWrapperFieldSetMapper JavaDoc:
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.