Java BeanUtilsBean:将Date转换为String

我正在尝试运行BeanUtilsBean.getInstance().populate(...)但是在HTML表单上,有一个字段包含出生日期的字符串表示。 对象bean的字段类型为java.util.Date

从Ggl读取一些必须构建自定义转换器的搜索,但不太了解如何做到这一点。

有人可以帮忙吗?

我的代码:

 public static void main(String[] args) { Map formData = new HashMap(); formData.put("email", new String[]{"danny@gmail.com"}); formData.put("firstName", new String[]{"danny"}); formData.put("lastName", new String[]{"miller"}); formData.put("dob", new String[]{"15-Apr-1980"}); formData.put("userName", new String[]{"dannymiller"}); try { Consumer consumer = new Consumer(); DateTimeConverter dtConverter = new DateConverter(); dtConverter.setPattern("dd/MMM/yyyy"); ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean(); convertUtilsBean.deregister(Date.class); convertUtilsBean.register(dtConverter, Date.class); BeanUtilsBean beanUtilsBean = new BeanUtilsBean(convertUtilsBean, new PropertyUtilsBean()); beanUtilsBean.populate(consumer, formData); if (consumer != null) { System.out.println(consumer.getEmail()); System.out.println(consumer.getFirstName()); System.out.println(consumer.getLastName()); System.out.println(consumer.getDob()); System.out.println(consumer.getUserName()); } } catch (Exception e) { e.printStackTrace(); } 

返回错误:

2011年4月22日下午11:14:45 org.apache.commons.beanutils.converters.DateTimeConverter toDate警告:DateConverter不支持默认String转换为’Date’。 2011年4月22日下午11:14:45 org.apache.commons.beanutils.converters.DateTimeConverter toDate警告:(NB重新配置转换器或使用替代实现)线程“main”中的exceptionorg.apache.commons.beanutils.ConversionException :DateConverter不支持将默认字符串转换为“日期”转换。 位于org.apache.com上的org.apache.com上发布的org.apache.commons.beanutils.converters.DateTimeConverter.toDate(DateTimeConverter.java:468)org.apache.commons.beanutils.converters.DateTimeConverter.convertToType(DateTimeConverter.java:343) .converters.AbstractConverter.convert(AbstractConverter.java:156)位于org.apache.commons.converterFacade.convert(ConverterFacade.java:60)的org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java) :470)atg.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1008)at com.ymatch.test.BeanTest的org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:830)。主(BeanTest.java:32)

您需要一个SimpleDateFormat来根据指定的格式解析给定的字符串。 为此,您需要手动处理转换 – 以不同方式命名请求参数,然后手动设置。

但beanutils有一个转换实用程序,所以你可以使用它(这个代码可以在每个应用程序执行一次):

 DateTimeConverter dtConverter = new DateConverter(); dtConverter.setPattern(""); ConvertUtils.register(dtConverter, Date.class); 

使用此方法完成:

 public Object populate(Object obj, HashMap formData) throws IllegalAccessException, InvocationTargetException { ConvertUtils .register(new StringToDateConverter(), java.util.Date.class); BeanUtilsBean.getInstance().populate(obj, formData); return obj; }