Por lo tanto, si desea asegurarse de que el sistema convierta correctamente el tipo de Fecha, debe escribir una clase de conversión de tipo global para realizar la conversión de tipo entre Fecha y Cadena.
Copie el código de código de la siguiente manera:
paquete com.great.util;
importar java.text.DateFormat;
importar java.text.SimpleDateFormat;
importar java.util.Fecha;
importar java.util.Map;
importar com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
clase pública DateConverter extiende DefaultTypeConverter {
Formato de fecha final estático privado [] ACCEPT_DATE_FORMATS = {
nuevo SimpleDateFormat("dd/MM/aaaa"),
nuevo SimpleDateFormat("aaaa-MM-dd"),
new SimpleDateFormat("yyyy/MM/dd") } //Admite formato de fecha para la conversión
@Anular
objeto público convertValue (contexto del mapa, valor del objeto, clase a tipo) {
if (toType == Date.class) { // Cuando el navegador envía al servidor, convierte la cadena en fecha
Fecha fecha = nulo;
Cadena fechaCadena = nulo;
String[] parámetros = (String[])valor;
dateString = params[0];//Obtener la cadena de fecha
para (formato DateFormat: ACCEPT_DATE_FORMATS) {
intentar {
return format.parse(dateString);//Recorre los formatos de fecha admitidos y conviértelos
} captura (Excepción e) {
continuar;
}
}
devolver nulo;
}
else if (toType == String.class) { //Cuando el servidor envíe al navegador, realice la conversión de tipo Fecha a Cadena
Fecha fecha = (Fecha)valor;
return new SimpleDateFormat("yyyy-MM-dd").format(date);//El formato de salida es yyyy-MM-dd
}
devolver nulo;
}
}
Cree el archivo xwork-conversion.properties en el directorio raíz y agregue la siguiente declaración para registrar el convertidor de tipos
java.util.Date=com.great.util.DateConverter
Entre ellos, com.great.util.DateConverter es el nombre completo de la clase de conversión de fecha, incluido el espacio de nombres.
Y luego mucha gente termina.
Pero aún no lo he logrado, el sistema informa un error.
"ERROR (CommonsLogger.java:27): error de registro de conversión"
"java.lang.ClassNotFoundException: com.great.util.DateConverter"
¿No se pudo registrar el convertidor de tipo?
Después de una inspección cuidadosa, descubrí que hay un espacio adicional después de "java.util.Date=com.great.util.DateConverter". La verdad se revela. Elimina los espacios y vuelve a ejecutar, ¡éxito!