Java BeanUtilsBean : Convertir une Date en Chaîne
Je suis en train de lancer BeanUtilsBean.getInstance().populate(...)
mais sur le formulaire HTML, il est un domaine qui porte représentation de Chaîne de Date de Naissance. L'objet bean a le type de champ de java.util.Date
De lire quelques-recherche de Ggl qui ont pour ériger des convertisseurs, mais pas tout à fait comprendre comment le faire.
Quelqu'un peut aider?
Mon code:
public static void main(String[] args) {
Map<String, String[]> formData = new HashMap<String, String[]>();
formData.put("email", new String[]{"[email protected]"});
formData.put("firstName", new String[]{"danny"});
formData.put("lastName", new String[]{"miller"});
formData.put("dob", new String[]{"15-Apr-1980"});
formData.put("userName", new String[]{"dannymiller"});
try {
Consumer consumer = new Consumer();
DateTimeConverter dtConverter = new DateConverter();
dtConverter.setPattern("dd/MMM/yyyy");
ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean();
convertUtilsBean.deregister(Date.class);
convertUtilsBean.register(dtConverter, Date.class);
BeanUtilsBean beanUtilsBean = new BeanUtilsBean(convertUtilsBean, new PropertyUtilsBean());
beanUtilsBean.populate(consumer, formData);
if (consumer != null) {
System.out.println(consumer.getEmail());
System.out.println(consumer.getFirstName());
System.out.println(consumer.getLastName());
System.out.println(consumer.getDob());
System.out.println(consumer.getUserName());
}
} catch (Exception e) {
e.printStackTrace();
}
Le retour d'erreur:
Avr 22, 2011 11:14:45 PM
org.apache.commons.beanutils.convertisseurs de.DateTimeConverter
jour AVERTISSEMENT: ne DateConverter
pas de support de Chaîne par défaut à 'Date'
la conversion. Apr 22, 2011 11:14:45 PM
org.apache.commons.beanutils.convertisseurs de.DateTimeConverter
jour AVERTISSEMENT: (N. B. Re-configurer
Convertisseur ou utiliser d'autres
la mise en œuvre) Exception in thread
"principale"
org.apache.commons.beanutils.ConversionException:
DateConverter ne supporte pas par défaut
Chaîne de 'la Date de conversion. au
org.apache.commons.beanutils.convertisseurs de.DateTimeConverter.jour(DateTimeConverter.java:468)
au
org.apache.commons.beanutils.convertisseurs de.DateTimeConverter.convertToType(DateTimeConverter.java:343)
au
org.apache.commons.beanutils.convertisseurs de.AbstractConverter.convertir(AbstractConverter.java:156)
au
org.apache.commons.beanutils.convertisseurs de.ConverterFacade.convertir(ConverterFacade.java:60)
au
org.apache.commons.beanutils.ConvertUtilsBean.convertir(ConvertUtilsBean.java:470)
au
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1008)
au
org.apache.commons.beanutils.BeanUtilsBean.remplir(BeanUtilsBean.java:830)
au
com.ymatch.test.BeanTest.principale(BeanTest.java:32)
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'un
SimpleDateFormat
par qui analyser la chaîne de caractères selon un format spécifié. Pour cela, vous devez gérer la conversion manuellement le nom du paramètre de la requête différemment et puis de le configurer manuellement.Mais beanutils a un utilitaire de conversion, de sorte que vous pouvez l'utiliser à la place (ce code peut être exécuté qu'une fois par candidature):
DateTimeConverter dtConverter = new DateTimeConverter();
n'est pas possible d'être instancié.DateConverter
c'est la classe concrèteFait à l'aide de cette méthode: