<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