我正在尝试跑步BeanUtilsBean.getInstance().populate(...)
但在 HTML 表单上,有一个字段包含出生日期的字符串表示形式。对象 bean 的字段类型为java.util.Date
阅读 Ggl 的一些搜索,这些搜索必须构建自定义转换器,但不太明白如何做到这一点。
有人可以帮忙吗?
My code:
public static void main(String[] args) {
Map<String, String[]> formData = new HashMap<String, String[]>();
formData.put("email", new String[]{"[email protected] /cdn-cgi/l/email-protection"});
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 会
不支持默认字符串为“日期”
转换。 2011 年 4 月 22 日 11:14:45 下午
org.apache.commons.beanutils.converters.DateTimeConverter
迄今为止警告:(注意:重新配置
转换器或使用替代品
实现)线程异常
“主要的”
org.apache.commons.beanutils.ConversionException:
DateConverter默认不支持
字符串到“日期”的转换。在
org.apache.commons.beanutils.converters.DateTimeConverter.toDate(DateTimeConverter.java:468)
在
org.apache.commons.beanutils.converters.DateTimeConverter.convertToType(DateTimeConverter.java:343)
在
org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:156)
在
org.apache.commons.beanutils.converters.ConverterFacade.convert(ConverterFacade.java:60)
在
org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:470)
在
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1008)
在
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:830)
在
com.ymatch.test.BeanTest.main(BeanTest.java:32)
你需要一个SimpleDateFormat
根据指定的格式解析给定的字符串。为此,您需要手动处理转换 - 以不同的方式命名请求参数,然后手动设置它。
但 beanutils 有一个转换实用程序,因此您可以使用它来代替(每个应用程序可以执行此代码一次):
DateTimeConverter dtConverter = new DateConverter();
dtConverter.setPattern("<your custom date pattern here>");
ConvertUtils.register(dtConverter, Date.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)