Java BeanUtilsBean: convert date to string

I am trying to run BeanUtilsBean.getInstance().populate(...) , but in the HTML form there is a field containing a string representation of the date of birth. The bean object has a field type of java.util.Date

Read some search from Ggl that should create custom converters, but didn't quite understand how to do this.

Anyone can help?

My code is:

 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(); } 

Return Error:

April 22, 2011 11:14:45 org.apache.commons.beanutils.converters.DateTimeConverter toDate ATTENTION: DateConverter does not support the default string in the 'Date' conversion. Apr 22, 2011 11:14:45 org.apache.commons.beanutils.converters.DateTimeConverter toDate WARNING: (NB Re-configure Converter or alternative implementation) An exception is thrown in the "main" stream org.apache.commons.beanutils.ConversionException: DateConverter does not support default settings Converting String to 'Date'. in org.apache.commons.beanutils.converters.DateTimeConverter.toDate (DateTimeConverter.java:468) in org.apache.commons.beanutils.converters.DateTimeConverter.convertToType (DateTimeConverter.javahaps43) in org.apache.commons.beanutils .converters.AbstractConverter.convert (AbstractConverter.java:156) in org.apache.commons.beanutils.converters.ConverterFacade.convert (ConverterFacade.java:60) in org.apache.commons.beanutils.ConvertUtilsBean.convert (ConvertUtilsBeanBean.evert : 470) in org.apache.commons.beanutils.BeanUtilsBean.setProperty (BeanUtilsBean.java:1008) in org.apache.commons.beanutils.BeanUtilsBean.populate (BeanUtilsBean.java:830) in com.ymatch.test.Bean. main (BeanTest.java:32)

+6
source share
2 answers

Made 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; } 
+4
source

You will need SimpleDateFormat to parse the given string according to the specified format. To do this, you will need to handle the conversion manually - specify the request parameter in different ways, and then set it manually.

But beanutils has a conversion utility, so you can use it instead (this code can be executed once for each application):

 DateTimeConverter dtConverter = new DateConverter(); dtConverter.setPattern("<your custom date pattern here>"); ConvertUtils.register(dtConverter, Date.class); 
+10
source

Source: https://habr.com/ru/post/886489/


All Articles