Spring вставляет Date в свойство bean - CustomDateEditor
Весенний пример, показывающий, как ввести «Date» в свойство bean.
package com.example.common;
import java.util.Date;
public class Customer {
Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Customer [date=" + date + "]";
}
}
Файл конфигурации бина
Запустить его
package com.example.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"SpringBeans.xml");
Customer cust = (Customer) context.getBean("customer");
System.out.println(cust);
}
}
Вы увидите следующие сообщения об ошибках:
Caused by: org.springframework.beans.TypeMismatchException:
Failed to convert property value of type [java.lang.String] to
required type [java.util.Date] for property 'date';
nested exception is java.lang.IllegalArgumentException:
Cannot convert value of type [java.lang.String] to
required type [java.util.Date] for property 'date':
no matching editors or conversion strategy found
Решение
Весной вы можете ввести дату двумя способами:
1. Фабричный боб
Объявите bean-компонент dateFormat в bean-компоненте customer, ссылаясь на bean-компонент dateFormat как фабричный bean-компонент. Заводской метод вызоветSimpleDateFormat.parse() для автоматического преобразования String в объект Date.
2. CustomDateEditor
Объявляет класс CustomDateEditor для преобразования String вjava.util.Date.
И объявляет еще один «CustomEditorConfigurer», чтобы Spring преобразовал свойства bean-компонента с типомjava.util.Date.
Полный пример файла конфигурации бина.
Скачать исходный код
Скачать -Spring-CustomDateEditor-Example.zip (5 КБ)