لذلك، إذا كنت تريد التأكد من أن النظام يجب أن يقوم بتحويل نوع التاريخ بشكل صحيح، فيجب عليك كتابة فئة تحويل النوع العام لإجراء تحويل النوع بين التاريخ والسلسلة.
انسخ رمز الكود كما يلي:
package com.great.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
الطبقة العامة DateConverter تمتد DefaultTypeConverter {
تنسيق التاريخ النهائي الثابت الخاص[] ACCEPT_DATE_FORMATS = {
SimpleDateFormat الجديد ("dd/MM/yyyy")،
SimpleDateFormat الجديد("yyyy-MM-dd")،
new SimpleDateFormat("yyyy/MM/dd") }; // يدعم تنسيق التاريخ للتحويل
@تجاوز
كائن عام ConvertValue(سياق الخريطة، قيمة الكائن، فئة toType) {
if (toType == Date.class) { // عندما يرسل المتصفح إلى الخادم، قم بتحويل السلسلة إلى تاريخ
تاريخ التاريخ = فارغ؛
String dateString = null;
String[] params = (String[])value;
dateString = params[0];//احصل على سلسلة التاريخ
لـ (تنسيق تنسيق التاريخ: ACCEPT_DATE_FORMATS) {
يحاول {
return format.parse(dateString);// اجتياز تنسيقات التاريخ المدعومة وتحويلها
} قبض (استثناء ه) {
يكمل؛
}
}
عودة فارغة؛
}
else if (toType == String.class) { // عندما يخرج الخادم إلى المتصفح، قم بإجراء تحويل التاريخ إلى نوع السلسلة
تاريخ التاريخ = (التاريخ) القيمة؛
إرجاع SimpleDateFormat جديد ("yyyy-MM-dd").format(date)؛// تنسيق الإخراج هو yyyy-MM-dd
}
عودة فارغة؛
}
}
قم بإنشاء ملف xwork-conversion.properties في الدليل الجذر وأضف العبارة التالية فيه لتسجيل محول النوع
java.util.Date=com.great.util.DateConverter
من بينها، com.great.util.DateConverter هو الاسم الكامل لفئة تحويل التاريخ بما في ذلك مساحة الاسم.
وبعد ذلك يتم الانتهاء من الكثير من الناس.
لكنني لم أنجح بعد، أبلغ النظام عن خطأ
"خطأ (CommonsLogger.java:27) - خطأ في تسجيل التحويل"
"java.lang.ClassNotFoundException: com.great.util.DateConverter"
فشل في تسجيل محول النوع؟
بعد الفحص الدقيق، وجدت أن هناك مساحة إضافية بعد "java.util.Date=com.great.util.DateConverter"! تم الكشف عن الحقيقة. إزالة المسافات وتشغيل مرة أخرى، النجاح!