Wenn Sie daher sicherstellen möchten, dass das System den Datumstyp korrekt konvertieren muss, müssen Sie eine globale Typkonvertierungsklasse schreiben, um die Typkonvertierung zwischen Datum und Zeichenfolge durchzuführen.
Kopieren Sie den Codecode wie folgt:
Paket com.great.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
java.util.Map importieren;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
Die öffentliche Klasse DateConverter erweitert DefaultTypeConverter {
privates statisches endgültiges DateFormat[] ACCEPT_DATE_FORMATS = {
neues SimpleDateFormat("TT/MM/JJJJ"),
neues SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy/MM/dd") }; //Unterstützt das Datumsformat für die Konvertierung
@Override
öffentliches Objekt konvertierenValue(Map context, Object value, Class toType) {
if (toType == Date.class) { //Wenn der Browser an den Server sendet, konvertieren Sie String in Date
Datum date = null;
String dateString = null;
String[] params = (String[])value;
dateString = params[0];//Erhalten Sie die Datumszeichenfolge
for (DateFormat-Format: ACCEPT_DATE_FORMATS) {
versuchen {
return format.parse(dateString);// Durchlaufen Sie die unterstützten Datumsformate und konvertieren Sie sie
} Catch(Ausnahme e) {
weitermachen;
}
}
null zurückgeben;
}
else if (toType == String.class) { //Wenn der Server an den Browser ausgibt, führen Sie eine Konvertierung des Typs „Datum in String“ durch
Datum date = (Datums-)Wert;
return new SimpleDateFormat("yyyy-MM-dd").format(date);//Das Ausgabeformat ist yyyy-MM-dd
}
null zurückgeben;
}
}
Erstellen Sie die Datei xwork-conversion.properties im Stammverzeichnis und fügen Sie die folgende Anweisung hinzu, um den Typkonverter zu registrieren
java.util.Date=com.great.util.DateConverter
Darunter ist com.great.util.DateConverter der vollständige Name der Datumskonvertierungsklasse einschließlich des Namespace.
Und dann sind viele Leute fertig.
Das ist mir aber noch nicht gelungen, das System meldet einen Fehler
„FEHLER (CommonsLogger.java:27) – Konvertierungsregistrierungsfehler“
„java.lang.ClassNotFoundException: com.great.util.DateConverter“
Typkonverter konnte nicht registriert werden?
Nach sorgfältiger Prüfung habe ich festgestellt, dass nach „java.util.Date=com.great.util.DateConverter“ ein zusätzliches Leerzeichen steht! Die Wahrheit wird enthüllt. Entfernen Sie die Leerzeichen und führen Sie den Vorgang erneut durch. Erfolg!