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 КБ)