Java BeanUtilsBean:将日期转换为字符串
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5757242/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Java BeanUtilsBean : Convert Date to String
提问by d4v1dv00
I am trying to run BeanUtilsBean.getInstance().populate(...)
but on the HTML form, there is a field that carries String representation of Date of Birth. The object bean has the field type of java.util.Date
我正在尝试运行,BeanUtilsBean.getInstance().populate(...)
但在 HTML 表单上,有一个字段携带出生日期的字符串表示形式。对象 bean 的字段类型为java.util.Date
Read some search from Ggl that have to build custom converters but not quite understand how to do that.
从 Ggl 中阅读一些必须构建自定义转换器的搜索,但不太了解如何做到这一点。
Anyone can help?
任何人都可以帮忙吗?
My code:
我的代码:
public static void main(String[] args) {
Map<String, String[]> formData = new HashMap<String, String[]>();
formData.put("email", new String[]{"[email protected]"});
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();
}
The return error:
返回错误:
Apr 22, 2011 11:14:45 PM org.apache.commons.beanutils.converters.DateTimeConverter toDate WARNING: DateConverter does not support default String to 'Date' conversion. Apr 22, 2011 11:14:45 PM org.apache.commons.beanutils.converters.DateTimeConverter toDate WARNING: (N.B. Re-configure Converter or use alternative implementation) Exception in thread "main" org.apache.commons.beanutils.ConversionException: DateConverter does not support default String to 'Date' conversion. at org.apache.commons.beanutils.converters.DateTimeConverter.toDate(DateTimeConverter.java:468) at org.apache.commons.beanutils.converters.DateTimeConverter.convertToType(DateTimeConverter.java:343) at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:156) at org.apache.commons.beanutils.converters.ConverterFacade.convert(ConverterFacade.java:60) at org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:470) at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1008) at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:830) at com.ymatch.test.BeanTest.main(BeanTest.java:32)
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 toDate 警告:(注意重新配置转换器或使用替代实现)线程“main”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。
采纳答案by d4v1dv00
Done using this method:
使用此方法完成:
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;
}
回答by Bozho
You need a SimpleDateFormat
by which to parse the given string according to a specified format. For that you'd need to handle the conversion manually - name the request parameter differently and then set it manually.
您需要SimpleDateFormat
根据指定的格式解析给定的字符串。为此,您需要手动处理转换 - 以不同的方式命名请求参数,然后手动设置。
But beanutils has a conversion utility, so you can use it instead (this code can be executed once per application):
但是 beanutils 有一个转换实用程序,因此您可以改用它(此代码可以为每个应用程序执行一次):
DateTimeConverter dtConverter = new DateConverter();
dtConverter.setPattern("<your custom date pattern here>");
ConvertUtils.register(dtConverter, Date.class);