따라서 시스템이 Date 유형을 올바르게 변환해야 하는지 확인하려면 Date와 String 간의 유형 변환을 수행하는 전역 유형 변환 클래스를 작성해야 합니다.
다음과 같이 코드 코드를 복사합니다 .
패키지 com.great.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
java.util.Date 가져오기;
java.util.Map 가져오기;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
공개 클래스 DateConverter는 DefaultTypeConverter를 확장합니다.
개인 정적 최종 DateFormat[] ACCEPT_DATE_FORMATS = {
새로운 SimpleDateFormat("dd/MM/yyyy"),
새로운 SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy/MM/dd") }; //변환을 위한 날짜 형식 지원
@보수
public Object ConvertValue(맵 컨텍스트, 객체 값, 클래스 toType) {
if (toType == Date.class) { //브라우저가 서버에 제출하면 문자열을 날짜로 변환합니다.
날짜 날짜 = null;
문자열 dateString = null;
String[] params = (String[])값;
dateString = params[0];//날짜 문자열을 가져옵니다.
(DateFormat 형식 : ACCEPT_DATE_FORMATS) {
노력하다 {
return format.parse(dateString);//지원되는 날짜 형식을 탐색하여 변환합니다.
} catch(예외 e) {
계속하다;
}
}
null을 반환;
}
else if (toType == String.class) { //서버가 브라우저에 출력할 때 Date to String 형식 변환을 수행합니다.
날짜 날짜 = (날짜)값;
return new SimpleDateFormat("yyyy-MM-dd").format(date);//출력 형식은 yyyy-MM-dd입니다.
}
null을 반환;
}
}
루트 디렉터리에 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" 뒤에 추가 공간이 있는 것을 발견했습니다! 진실이 드러납니다. 공백을 제거하고 다시 실행하면 성공합니다!