Par conséquent, si vous souhaitez vous assurer que le système doit convertir correctement le type Date, vous devez écrire une classe de conversion de type globale pour effectuer la conversion de type entre Date et String.
Copiez le code comme suit :
paquet com.great.util;
importer java.text.DateFormat ;
importer java.text.SimpleDateFormat ;
importer java.util.Date ;
importer java.util.Map ;
importer com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter ;
la classe publique DateConverter étend DefaultTypeConverter {
DateFormat final statique privé[] ACCEPT_DATE_FORMATS = {
nouveau SimpleDateFormat("jj/MM/aaaa"),
nouveau SimpleDateFormat("aaaa-MM-jj"),
new SimpleDateFormat("aaaa/MM/jj") }; //Prend en charge le format de date pour la conversion
@Outrepasser
public Object convertValue (contexte de la carte, valeur de l'objet, classe toType) {
if (toType == Date.class) { //Lorsque le navigateur soumet au serveur, convertissez la chaîne en date
Date date = nulle ;
Chaîne dateString = null ;
String[] params = (String[])valeur ;
dateString = params[0];//Obtenir la chaîne de date
pour (format DateFormat : ACCEPT_DATE_FORMATS) {
essayer {
return format.parse(dateString);//Parcourez les formats de date pris en charge et convertissez-les
} catch(Exception e) {
continuer;
}
}
renvoie null ;
}
else if (toType == String.class) { //Lorsque le serveur envoie au navigateur, effectuez la conversion du type Date en String
Date date = (Date)valeur ;
return new SimpleDateFormat("aaaa-MM-jj").format(date);//Le format de sortie est aaaa-MM-jj".
}
renvoie null ;
}
}
Créez le fichier xwork-conversion.properties dans le répertoire racine et ajoutez-y l'instruction suivante pour enregistrer le convertisseur de type
java.util.Date=com.great.util.DateConverter
Parmi eux, com.great.util.DateConverter est le nom complet de la classe de conversion de date incluant l'espace de noms.
Et puis beaucoup de gens ont fini.
Mais je n'ai pas encore réussi, le système signale une erreur
"ERREUR (CommonsLogger.java:27) - Erreur d'enregistrement de conversion"
"java.lang.ClassNotFoundException : com.great.util.DateConverter"
Vous n'avez pas réussi à enregistrer le convertisseur de type ?
Après une inspection minutieuse, j'ai découvert qu'il y avait un espace supplémentaire après "java.util.Date=com.great.util.DateConverter" ! La vérité est révélée. Supprimez les espaces et recommencez, succès !