<date__Envoie>2013-02-28 17:01:29.669 UTC</date__Envoie>
Afin de personnaliser l'affichage de la date, il est possible via une annotation d'indiquer a XStream de ne pas utiliser le rendu standard mais un rendu personnalisé.
Il est donc nécessaire d'ajouter l'annotation suivant au champ dateEnvoie (en-dessous de l'annotation alias) :
@XStreamConverter(value=MyDateConverter.class)
Dans le cas d'une date (mais aussi pour une String, Integer...), il s'agit de remplacer le comportement de la classe com.thoughtworks.xstream.converters.basic.DateConverter.
Cette classe hérite de la classe com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter.
Il est simplement nécessaire de redéfinir les méthodes :
public class MyDateConverter extends AbstractSingleValueConverter {
// Indique si cette classe prend en charge la conversion
@Override
public boolean canConvert(Class type) {
return type.equals(java.util.Date.class);
}
// Transforme la valeur XML en Java
@Override
public Object fromString(String str) {
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd") ;
Date dateStr = null ;
try {
dateStr = sdf.parse(str) ;
} catch (ParseException e) {
// Nothing
}
return dateStr ;
}
// Transforme la valeur Java en XML
@Override
public String toString(Object obj) {
final Date date = (Date)obj;
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd") ;
return sdf.format(date) ;
}
}
Aucun commentaire:
Enregistrer un commentaire