Oleh karena itu, jika Anda ingin memastikan bahwa sistem harus mengonversi tipe Tanggal dengan benar, Anda harus menulis kelas konversi tipe global untuk melakukan konversi tipe antara Tanggal dan String.
Copy kode kodenya sebagai berikut:
paket com.great.util;
impor java.teks.DateFormat;
impor java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
impor com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
kelas publik DateConverter memperluas DefaultTypeConverter {
DateFormat akhir statis pribadi[] ACCEPT_DATE_FORMATS = {
SimpleDateFormat baru("hh/MM/tttt"),
SimpleDateFormat baru("yyyy-MM-dd"),
new SimpleDateFormat("yyyy/MM/dd") }; //Mendukung format tanggal untuk konversi
@Mengesampingkan
public Object convertValue(Konteks peta, Nilai objek, Kelas toType) {
if (toType == Date.class) {/ //Saat browser mengirimkan ke server, konversikan String ke Date
Tanggal tanggal = null;
String tanggalString = null;
String[] params = (String[])nilai;
dateString = params[0];//Dapatkan string tanggal
untuk (Format Format Tanggal : ACCEPT_DATE_FORMATS) {
mencoba {
return format.parse(dateString);//Melintasi format tanggal yang didukung dan mengonversinya
} tangkapan(Pengecualian e) {
melanjutkan;
}
}
kembalikan nol;
}
else if (toType == String.class) {//Ketika server mengeluarkan output ke browser, lakukan konversi tipe Tanggal ke String
Tanggal tanggal = (Tanggal) nilai;
return new SimpleDateFormat("yyyy-MM-dd").format(date);//Format outputnya adalah yyyy-MM-dd
}
kembalikan nol;
}
}
Buat file xwork-conversion.properties di direktori root dan tambahkan pernyataan berikut di dalamnya untuk mendaftarkan tipe converter
java.util.Date=com.great.util.DateConverter
Diantaranya, com.great.util.DateConverter adalah nama lengkap kelas konversi tanggal termasuk namespacenya.
Dan kemudian banyak orang selesai.
Tapi saya belum berhasil, sistem melaporkan kesalahan
"ERROR (CommonsLogger.java:27) - Kesalahan pendaftaran konversi"
"java.lang.ClassNotFoundException: com.great.util.DateConverter"
Gagal mendaftarkan konverter jenis?
Setelah diperiksa dengan cermat, saya menemukan ada spasi tambahan setelah "java.util.Date=com.great.util.DateConverter"! Kebenaran terungkap. Hilangkan spasinya lalu jalankan kembali, sukses!