Поэтому, если вы хотите убедиться, что система правильно преобразует тип Date, вам необходимо написать глобальный класс преобразования типов, который будет выполнять преобразование типов между Date и String.
Скопируйте код кода следующим образом:
пакет com.great.util;
импортировать java.text.DateFormat;
импортировать java.text.SimpleDateFormat;
импортировать java.util.Date;
импортировать java.util.Map;
импортировать com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
публичный класс DateConverter расширяет DefaultTypeConverter {
частный статический окончательный DateFormat[] ACCEPT_DATE_FORMATS = {
новый SimpleDateFormat("дд/мм/гггг"),
новый SimpleDateFormat("гггг-ММ-дд"),
new SimpleDateFormat("гггг/ММ/дд") } //Поддерживает формат даты для преобразования
@Override
public Object ConvertValue (контекст карты, значение объекта, класс toType) {
if (toType == Date.class) { //Когда браузер отправляет данные на сервер, преобразуем строку в дату
Дата дата = ноль;
Строка dateString = null;
String[] params = (String[])значение;
dateString = params[0];//Получаем строку даты
для (формат DateFormat: ACCEPT_DATE_FORMATS) {
пытаться {
return format.parse(dateString);//Обходим поддерживаемые форматы дат и преобразуем их
} catch(Исключение е) {
продолжать;
}
}
вернуть ноль;
}
else if (toType == String.class) { //Когда сервер выводит данные в браузер, выполняем преобразование типа Date в String
Дата Дата = (Дата)значение;
return new SimpleDateFormat("гггг-ММ-дд").format(date);//Формат вывода: гггг-ММ-дд
}
вернуть ноль;
}
}
Создайте файл 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» есть лишний пробел! Истина раскрыта. Удалите пробелы и запустите снова, успехов!