d4v*_*v00 6 java apache-commons
我试图运行,BeanUtilsBean.getInstance().populate(...)但在HTML表单上,有一个字段,其中包含出生日期的字符串表示.对象bean的字段类型为java.util.Date
从Ggl读取一些必须构建自定义转换器的搜索,但不太了解如何做到这一点.
有人可以帮忙吗?
我的代码:
public static void main(String[] args) {
Map<String, String[]> formData = new HashMap<String, String[]>();
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();
}
Run Code Online (Sandbox Code Playgroud)
返回错误:
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"中的异常org.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)atg.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:830)at com.ymatch.test.BeanTest.主(BeanTest.java:32)
Boz*_*zho 11
您需要SimpleDateFormat根据指定的格式解析给定的字符串.为此,您需要手动处理转换 - 以不同方式命名请求参数,然后手动设置.
但是beanutils有一个转换实用程序,所以你可以使用它(这个代码可以在每个应用程序执行一次):
DateTimeConverter dtConverter = new DateConverter();
dtConverter.setPattern("<your custom date pattern here>");
ConvertUtils.register(dtConverter, Date.class);
Run Code Online (Sandbox Code Playgroud)
使用此方法完成:
public Object populate(Object obj, HashMap<String, String[]> formData)
throws IllegalAccessException, InvocationTargetException {
ConvertUtils
.register(new StringToDateConverter(), java.util.Date.class);
BeanUtilsBean.getInstance().populate(obj, formData);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19256 次 |
| 最近记录: |